Skip to content

Architecture

jguyonneau edited this page Aug 30, 2022 · 9 revisions

Architecture hardware

Voir l'image en grand

Ceci est une présentation de notre instanciation matériel du code de l'asserv. Il est possible et prévu de faire une autre instance pour utiliser des encodeurs différents (PM Robotix utilise des encodeurs custom basé sur des capteurs magnétiques) et une carte de puissance moteur différente. Il est possible de relier votre instance a une autre carte de plus haut niveau, via une autre interface ( ou pas ! Vous pouvez faire une carte d'IAServ, on l'a déjà fait dans des cas très désespéré ). Vous pouvez également utiliser une autre carte nucleo ou n'importe quelle carte à partir du moment où elle gérée par ChibiOS.

Pour faire votre version, vous devrez faire votre propre instance en implémentant votre propre main.cpp qui devrait se trouver dans :

src/Robots/MonRobot/main.cpp 

Puis, il faudra spécifier au main votre main.cpp personnel via:

make ROBOT=MonRobot

Architecture logiciel

Voici une présentation de l'architecture logiciel actuelle. Comme vous pouvez le voir, il y a un certain nombre d'interface qui permettent de s'adapter a différentes instances hardware ou à des besoins différents selon ce que l'on veut faire de notre robot.

Voir l'image en grand

Architecture asservissement

Ici, j'ai fait un choix contraignant dès le départ qui se retrouve dans l'architecture de l'asserv. Jusqu’à maintenant, nous ( et pas mal d'autres équipes autant que je sache) utilisions une régulation basé sur 2 Proportionnel+Dérivée pour réguler en polaire (Si vous ne savez pas de quoi qui s'agit, le très complet article de PM-robotix sera utile). Cela apportait une certaine facilité à l'implémentation et au réglage, mais il nous a toujours été très compliqué de contrôler correctement l'accélération et la décélaration. Globalement même en utilisant des quadRampDerivee d'Aversive, nous avons toujours eu des comportements moyen et des réglages qui ne fonctionnaient pas tout le temps.

Donc j'ai pris le parti de faire une régulation basé sur 2 proportionnel pour la régulation polaire qui donnent des consignes en vitesse aux 2 régulateurs poportionnel+intégral qui controllent les roues en vitesse. Cela pour pouvoir contrôler finement la dérivée des consignes de vitesse, et donc contrôler l’accélération et la deceleration. Au départ, je pensais que cette solution ajouterai de la difficulté de réglage supplémentaire (2 PI à régler en plus), mais au final le bilan est nuancé. Certes, on doit régler 2 PI supplémentaires, mais le réglage est assez facile à faire, les différents réglages sont plutôt indépendants, et le réglage des 2 proportionnels est simplissime.

Voir l'image en grand