Robot Principal 26
Documentation du Club Robot INSA Rennes 2026
Chargement...
Recherche...
Aucune correspondance
Wheeled base

Tout le code lié au déplacement du robot. Plus de détails...

Graphe de collaboration de Wheeled base:

Topics

 Moteurs
 Différentes interface permettant de manipuler des moteurs.
 
 Paramètres de ralentissement du robot
 Les paramètres de ralentissement du robot à la fin de goto.
 
 Codewheel_hardware_timers
 

Fichiers

fichier  AbstractTimer.h
 Un timer abstrait pour que Codewheel ne dépende pas directement du hardware.
 
fichier  VelocityController.h
 Contrôleur de vitesse pour un robot à base différentielle.
 
fichier  TurnOnTheSpot.h
 Implémentation d'AbstractMoveStrategy qui fait tourner le robot sur lui-même.
 
fichier  Wheeledbase.h
 Fonctions de convénience pour faire les déplacements facilement.
 
fichier  wb_const.h
 Diverses constantes concernant la base roulante.
 
fichier  wb_thread.h
 Contient les fonctions et variables nécessaires pour gérer le thread de base roulante.
 

Espaces de nommage

namespace  Wheeledbase
 Fonctions de convénience pour faire les déplacements facilement.
 

Classes

struct  Position
 Structure de position. Plus de détails...
 
class  Codewheel
 Fait la passerelle entre les roues codeuses et le stm32. Plus de détails...
 
class  DifferentialController
 Controle les moteurs. Plus de détails...
 
class  PID
 Classe d'asservissement. Plus de détails...
 
class  PositionController
 Classe support des objets AbstractMoveStrategy. Plus de détails...
 
class  AbstractMoveStrategy
 Interface de Stratégie de mouvement. Plus de détails...
 
class  BasicMoveStrategy
 Stratégie de mouvement basique. Plus de détails...
 
class  BasicTurnStrategy
 Stratégie de mouvement basique. Plus de détails...
 

Description détaillée

Tout le code lié au déplacement du robot.

Base Roulante

PC, DC, VC, kézako ?

Dans cette section, nous allons aborder le schéma compliqué qu'entretiennent les différents composants de la base roulante du robot.

  • **PositionController (PC)** : Ce composant gère l'asservissement en position du robot.
  • **VelocityController (VC)** : Ce composant gère l'asservissement en vitesse du robot. Il hérite du plus simple **DifferentialController (DC)** qui calcule la vitesse de rotation des roues à partir de la sortie du **PID**.
  • **AbstractMoveStrategy MoveStrategy** : Ce composant est responsable de la stratégie de mouvement du robot : à partir de la position actuelle, il va calculer la consigne en vitesse du robot.
  • **Odometry** : L'odométrie permet de déterminer la position du robot à partir de la vitesse des codeuses.
  • Le VC et le PC sont tous deux des **PeriodicProcess** : ils ont une fonction PeriodicProcess::update() qui est appelée tous les PeriodicProcess::m_timestep ms.
  • **Wheeledbase.h** : Ce fichier contient un certain nombre de fonctions auxiliaires se reposant sur les composants précédemment cités pour permettre de piloter le robot plus facilement.

Et comment tout ça est relié ?

À chaque itération de la boucle de la base roulante, gardez en tête que ça ne se produit que s'il est possible de le faire, c'est-à-dire que le timestep du PeriodicProcess est écoulé. Dans l'ordre, l'odométrie est mise à jour, ce qui permet de déterminer la position actuelle du robot. Ensuite, le PositionController appelle la stratégie de mouvement pour déterminer la consigne en vitesse du robot. Il transmet ensuite cette consigne au VelocityController. Celui-ci applique des traitements (notamment des rampes) à la consigne de vitesse. Une fois que la consigne est prête, le VelocityController va la transmettre au DifferentialController, qui va appliquer le PID et déterminer la vitesse de rotation de chaque roue. Enfin le DC va transmettre ces consignes directement aux drivers.

Ce système permet à la fois une grande flexibilité (possibilité d'implémenter plusieurs MoveStrategy), mais aussi une grande robustesse. Toutefois, il est à noter qu'il y a beaucoup de constantes à régler (constantes du PID, rayon des roues, écart entre les roues, etc.), et que les systèmes sont difficilement découplable, aussi, il faut s'y prendre à l'avance dans le réglage de ces constantes.

Comment régler ces constantes alors ?

TODO