Noms et réseau
S’applique à : Simulation Robot réel
Plusieurs robots partagent le même réseau sans se confondre. Trois idées suffisent pour s’y retrouver : le numéro du robot, le domaine ROS et les repères de position.
Le numéro du robot
Chaque robot porte un numéro N, de 1 à 19. Tout ce qui le concerne en
découle :
Quoi |
Pour le robot 2 |
|---|---|
le nom de son Raspberry Pi |
|
son adresse réseau |
|
ses topics |
|
ses repères de position |
|
dans les commandes |
|
Ce qui est commun à tous les robots, comme l’arrêt de tout le parc depuis la
manette, vit sous /ratbot_fleet/. En simulation, les robots sont numérotés
à partir de 1, comme les vrais (voir Travailler à plusieurs robots).
Note
Le nom de la machine décide de son rôle : ratbot-2 est le robot 2,
toute autre machine est un PC. ./scripts/ratbot role affiche ce que la
machine croit être.
Le domaine ROS
Les machines ROS 2 ne se voient que si elles partagent le même domaine, un
numéro fixé par la variable ROS_DOMAIN_ID. Tous les robots, le PC et le
conteneur Docker utilisent le domaine 77.
Conséquence : une simulation lancée dans le domaine 77 se mélangerait aux vrais
robots allumés, puisqu’elle utilise les mêmes noms. ./scripts/ratbot up
refuse donc de démarrer si un robot réel répond. Pour simuler à côté, changez
de domaine dans chaque terminal de la simulation (voir La simulation en détail) :
export ROS_DOMAIN_ID=0
Les repères de position
La position du robot s’exprime dans une chaîne de repères :

La chaîne des repères : la carte, l’odométrie, le robot.
odom→base_footprint: ce que le robot compte avec ses roues et son gyroscope. Précis sur quelques mètres, mais il dérive peu à peu ;map→odom: la correction apportée par le lidar, publiée par la cartographie ou la navigation.
RViz affiche le robot dans l’un de ces repères (le Fixed Frame). Un « No transform » dans RViz veut presque toujours dire que le repère choisi n’existe pas encore (voir Visualiser dans RViz). En simulation, un repère de plus, la vérité terrain, donne la position exacte du robot (voir La simulation en détail).