Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
robotique:r_cerda:programmation [21/02/2015 17:09] sky99 |
robotique:r_cerda:programmation [21/02/2015 17:27] (Version actuelle) sky99 |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Programmation de R.Cerda pour une exploration automatique avec évitement d'obstacles ====== | + | ====== Programmation de R.Cerda ====== |
+ | Cet article décrit une partie de la construction de [[robotique:r_cerda:start]]. Il fait suite à un précédent article sur l'assemblage du robot : [[robotique:r_cerda:assemblage]]. | ||
+ | Le plan général du tutoriel de construction est le suivant : | ||
+ | - [[robotique:r_cerda:start]] | ||
+ | - [[robotique:r_cerda:choix_materiel|Choix des éléments matériels du robot]] | ||
+ | - [[robotique:r_cerda:conception|Details et explications sur la conception du robot]] | ||
+ | - [[robotique:r_cerda:assemblage|Assemblage des éléments du robot et construction du châssis]] | ||
+ | - [[robotique:r_cerda:programmation|Programmation du robot pour la navigation avec évitement d'obstacles]](page courante) | ||
Il est maintenant temps de transformer cet assemblage de matériel en un vrai Robot. Pour cela, nous allons maintenant voir l'ultime étape : la programmation. Nous verrons trois algorithmes, du plus simple au plus avancé. Cela devrait vous permettre d'avoir une base pour programmer votre robot comme vous le souhaitez, et pourquoi pas quelques idées ! | Il est maintenant temps de transformer cet assemblage de matériel en un vrai Robot. Pour cela, nous allons maintenant voir l'ultime étape : la programmation. Nous verrons trois algorithmes, du plus simple au plus avancé. Cela devrait vous permettre d'avoir une base pour programmer votre robot comme vous le souhaitez, et pourquoi pas quelques idées ! | ||
Ligne 95: | Ligne 103: | ||
{{ youtube>tiKDK-l2gis?large |Algorithme basique d'évitement d'obstacle avec gestion des collisions (r2.py)}} | {{ youtube>tiKDK-l2gis?large |Algorithme basique d'évitement d'obstacle avec gestion des collisions (r2.py)}} | ||
+ | ===== Algorithme basique d'évitement d'obstacles avec gestion des collisions et changement de sens de rotation : r3.py ===== | ||
+ | [[https://github.com/sarinkhan/R.Cerda/blob/master/r3.py|La troisième version de ce code, r3.py]] permet au robot de changer de sens de rotation plutôt que de tourner toujours à gauche. En effet, dans les précédentes version, le robot évite systématiquement les obstacles par la gauche, ce qui entraîne qu'il finit par tourner en rond. Ici, lorsque le robot à tourné un certain nombre de fois du même côté, il décide d'éviter les obstacles en tournant dans l'autre sens. Nous considérons ici que tourner d'un coté inclut toute la série d'instructions entre le moment ou le robot commence à tourner pour éviter un obstacle et le moment ou il a complètement terminé sa rotation, reprenant sa route. On s'assure ainsi que le robot ne fasse pas des allers retours de gauche à droite : quand il commence à tourner, il continue jusqu'à avoir trouvé un chemin dégagé. | ||
+ | |||
+ | Cette vidéo illustre le comportement du robot lorsqu'il exécute ce programme : | ||
+ | {{ youtube>2Qf3TnlQzeo?large |Algorithme basique d'évitement d'obstacle avec gestion des collisions et changement de sens d'évitement d'obstacles (r3.py)}} | ||
+ | |||
+ | |||
+ | |||
+ | ===== Algorithme avancé d'évitement d'obstacle, avec analyse de l'environnement proche : r4.py ===== | ||
+ | [[https://github.com/sarinkhan/R.Cerda/blob/master/r4.py|La quatrième version de ce code, r4.py]] reprend les bases posées sur les précédents algorithmes. Toutefois, au lieu d'éviter d'un côté ou de l'autre les obstacles "au hasard", le robot qui rencontre un objet devant lui se tournera légèrement à gauche et à droite pour mesurer la distance de chaque côté. Il choisira alors de tourner du côté ou la distance est la plus grande. Une fois qu'il a commencé à tourner, il continuera jusqu'à ce que l'obstacle ne soit plus dans sa trajectoire. Cette approche permet au robot de choisir la trajectoire d'évitement la plus rapide lorsqu'il rencontre un mur : ainsi il s'éloignera du mur par le côté le plus ouvert. | ||
+ | |||
+ | La vidéo suivante illustre le comportement du robot lorsqu'il exécute ce programme : | ||
+ | {{ youtube>IWt7p3Al-Fo?large |Algorithme évolué d'évitement d'obstacles avec analyse de l'environnement proche (r4.py)}} | ||
+ | Je n'ai pas encore téléversé le fichier sur le github, mais je vais chercher le code pour pouvoir le faire au plus vite, à l'adresse du lien en début de cette section. |