dimanche 11 décembre 2011

Virez à Babord !

Encore quelques calculs et programmes et notre navire se débrouillera presque tout seul !

Maintenant que nous avons toutes les données, il n'y a plus qu'à les exploiter :
- nous commencerons à chercher à tourner jusqu'à atteindre le bon cap puis
- nous avancerons vers l'objectif en corrigant tout écart

Tourner :

Il éxiste plusieurs manières, pour tout système sur deux roues, de tourner :
- les deux roues avancent dans le même sens, l'une allant plus vite que l'autre
- une des deux roues est à l'arrêt
- les deux roues tournent dans le sens inverse, à même vitesse

  Méthode 1           Méthode 2            Méthode 3

La première méthode est plutôt utiliser pour se déplacer que pour tourner.
La seconde méthode est utile pour que la rotation soit très précise, on atteindra moins rapidement mais plus justement le cap désiré.
La troisième méthode permet au robot d'atteindre rapidement le cap désiré tout en restant sur place, limitant ainsi le risque de croiser un obstacle.

La troisième méthode est la plus utilisée mais personnellement j'utilise les deux dernières.
Dans un premier temps il faudra comparer AlphaR, le cap actuel du robot, à DirecCibl, le cap à prendre. Puis il faudra exploiter cette valeur pour trois cas de figure :
- La diffèrence entre AlphaR et DirecCibl, que j'appelle AlphaRC est très grande : la vitesse des roues sera inversée l'une de l'autre mais la vitesse sera grande. C'est le cas de figure orange ci-dessous.
- AlphaRC n'est pas très élevé mais suffisament pour qu'il faille tourner encore. La vitesse des roues est toujours inversée l'une de l'autre mais la vitesse est Vmini, la vitesse mini (puissance) donnée aux moteurs. C'est le cas de figure jaune.
- AlphaRC se rapproche de 0, il faut ralentir pour augmenter la précision. Dans ce cas, j'arrête le moteur qui avançait et réduis la vitesse du moteur qui continue de reculer. C'est le cas de figure vert.



Bien entendu il faut arrêter le robot lorsque le cap est atteint mais il y a peu de chance pour que le robot s'arrête exactement au moment où il détecte qu'il a atteint le cap. C'est pourquoi j'arrête la rotation quelques degrés avant d'arriver au cap. Ces quelques degrés sont définis par mesure et cela me permet d'arrêter réellement le robot au cap souhaité.

Sortir du mode 'Tourner' :

Une fois que vous savez tourner, il faudra avancer ou reculer. Mais est-ce vraiment toujours utile d'être exactement aligné sur DirecCibl ? NON, pas toujours. Si vous allez vous plaquer contre un bord pour prendre vos références ou activer un élément de jeu, alors la oui. Mais si vous tournez avant de vous rendre à un point de passage, peut être pouvez vous 'sortir' du mode 'Tourner' pour rentrer dans le mode 'Avancer' ? Il faut par contre dans ce cas là que votre mode 'Avancer' rattrape le décalage angulaire provoquer.

Il y aura donc deux modes 'Tourner', les deux fonctionnant de la même manière mais le premier permettra de tourner avant une action précise et le second permettra de tourner avant de se déplacer.

Démonstration :

Démonstration de la rotation d'OLEG

Aucun commentaire:

Enregistrer un commentaire