Robots suiveurs 3 - Tableau de Bord : Différence entre versions
(→VI) Communication entre deux robots) |
(→IV) Communication entre deux robots) |
||
| Ligne 50 : | Ligne 50 : | ||
Pour faire le code, on est parti du controller emitter_receiver, trouvé dans un monde de base homonyme. Nous avons eu deux démarches : une consistant à garder le code dans son langage, le C, est à l’adapter et une autre consistant à passer en C++ pour garder une cohésion avec le groupe entier qui code aussi en C++. | Pour faire le code, on est parti du controller emitter_receiver, trouvé dans un monde de base homonyme. Nous avons eu deux démarches : une consistant à garder le code dans son langage, le C, est à l’adapter et une autre consistant à passer en C++ pour garder une cohésion avec le groupe entier qui code aussi en C++. | ||
| + | |||
| + | * [[Robots suiveurs 3 - Code Communication C |Code C]] | ||
| + | * [[Robots suiveurs 3 - Code Communication C++ |Code C++]] | ||
Dans les deux cas nous sommes arrivés à mettre en place une communication continue entre deux robots. Nous sommes capables de savoir si la communication se passe bien ou si elle est interrompue et nous avons réussi à transmettre au robot esclave la position relative (le robot esclave est utilisé comme origine d’un système de coordonnées) du robot maître. Nous allons utiliser ces données pour déplacer correctement le robot esclave. Deux solutions s’offrent à nous : | Dans les deux cas nous sommes arrivés à mettre en place une communication continue entre deux robots. Nous sommes capables de savoir si la communication se passe bien ou si elle est interrompue et nous avons réussi à transmettre au robot esclave la position relative (le robot esclave est utilisé comme origine d’un système de coordonnées) du robot maître. Nous allons utiliser ces données pour déplacer correctement le robot esclave. Deux solutions s’offrent à nous : | ||
Version du 17 avril 2020 à 10:44
Sommaire
I) Description du simulateur
II) Déplacements contrôlés au clavier
L'objectif de cette partie est d’implémenter la possibilité de contrôler un robot avec les touches classiques zqsd afin de permettre la réalisation de tests. Pour ce faire, on faut créer un nouveau contrôleur : Wizards -> New Robot Controller. Notre contrôleur sera nommé Clavier_Control et codé en C++. Une fenêtre éditor s'ouvre alors. Pour gérer le contrôle des moteurs. Nous sommes partis de la base donnée en tutoriel à cette adresse.
Cette base donne les fondations pour pouvoir contrôler en vitesse les moteurs. C'est exactement ce dont nous avons besoin, puisque notre robot doit accélérer lorsqu'on le lui impose.
III) Robot Suiveur simple avec capteurs de distance
a) Description
Dans cette partie, on devait réaliser un robot suiveur rudimentaire en utilisant 2 capteurs de distance afin de comprendre leur fonctionnement. le logiciel webots nous fourni déjà des robots préfait possédant une multitude de capteurs. On a donc utilisé le robot E-puck, possédant 2 roues et 8 capteurs de distances autour de lui (ainsi qu'une caméra, un émetteur et un récepteur).
b) Fonctionnement
Afin d'avoir un robot simple, on utilise seulement les 2 capteurs à l'avant du robot (un plutôt à droite et l'autre plutôt à gauche). Ces capteurs servent à détecter le robot de devant. On fixe un seuil de distance activant ou non 2 booléens "robot_a_droite/gauche". On a donc 4 combinaisons différentes de ces booléens qui vont servir a commander notre robot:
| robot_a_droite | robot_a_gauche | résultat |
|---|---|---|
| faux | faux | avancer |
| faux | vrai | tourner à gauche |
| vrai | vrai | stop |
| vrai | faux | tourner à droite |
c) Résultats
IV) Communication entre deux robots
Pour configurer la communication entre deux robots, au tout début, il a fallu additionner les robots au monde et exécuter la commande “Convert to Base Node(s)” (clique droit sur le robot dans le node tree). Cela a été nécessaire pour pouvoir changer quelques caractéristiques des robots, comme ses noms et le “range” de l'émetteur.
Pour faire le code, on est parti du controller emitter_receiver, trouvé dans un monde de base homonyme. Nous avons eu deux démarches : une consistant à garder le code dans son langage, le C, est à l’adapter et une autre consistant à passer en C++ pour garder une cohésion avec le groupe entier qui code aussi en C++.
Dans les deux cas nous sommes arrivés à mettre en place une communication continue entre deux robots. Nous sommes capables de savoir si la communication se passe bien ou si elle est interrompue et nous avons réussi à transmettre au robot esclave la position relative (le robot esclave est utilisé comme origine d’un système de coordonnées) du robot maître. Nous allons utiliser ces données pour déplacer correctement le robot esclave. Deux solutions s’offrent à nous :
- Se déplacer selon l’axe des X puis l’axe des Z.
- Se déplacer selon l’hypoténuse formée.