Outils pour utilisateurs

Outils du site


robotique:r_cerda:programmation

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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:15]
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 98: Ligne 106:
 [[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é. [[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)}} {{ youtube>​2Qf3TnlQzeo?​large |Algorithme basique d'​évitement d'​obstacle avec gestion des collisions et changement de sens d'​évitement d'​obstacles (r3.py)}}
  
  
-On peut voir le comportement du robot exécutant cet algorithme ​dans la vidéo ​ci dessous ​:  + 
-{{ youtube>tiKDK-l2gis?large |Algorithme ​basique ​d'​évitement d'obstacle ​avec gestion des collisions ​(r2.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.
robotique/r_cerda/programmation.1424535327.txt.gz · Dernière modification: 21/02/2015 17:15 par sky99