-
Notifications
You must be signed in to change notification settings - Fork 1
[FR] Mapping et Navigation
Pour générer une carte, il faut exécuter le SLAM et faire déplacer le robot à travers les endroits à cartographier.
Nous avons suivi ce tutoriel officiel en lançant le SLAM et Rviz2 sur nos machines personnelles, pour observer en temps réel la génération de la carte et diriger le robot avec la téléopération par clavier. Nous avions effectué cela sans changer les paramètres par défaut sur le robot pro_1.
Mise à jour (Juin 2023): Même en lançant RViz avec un namespace en argument de commande, il faut manuellement changer TOUS LES NOMS DE TOPIC puisque le namespace n'est pas appliqué du tout.
Nous avons pu définir une pose initiale du robot, ainsi que le faire naviguer à travers la carte générée. Nous avons également pu voir le modèle du Robot ainsi que son retour caméra.
Nous avons eu l'impression que dans la globalité, le lite_1 était le plus coopératif des robots.
Après avoir généré une carte, il est possible de la charger dans RViz2
pour définir une trajectoire, puis lancer une navigation autonome.
Il faudra au moins 4 fenêtres de terminal :
-
Une pour lancer la localisation à l'aide de la carte précédemment générée
-
Une pour lancer la navigation avec l'outil Nav2
-
Une pour lancer le noeud ROS définissant la trajectoire
-
Une pour lancer RViz2 et avoir un retour visuel
Puisque ROS2 fonctionne en réseau, il devrait être possible de lancer tout cela sur n'importe quel client (machine personnelle ou robot). Cependant, à cause de latences trop souvant rencontrées, nous lancions la localisation, la navigation et RViz2 sur une machine personnelle, et le noeud ROS sur le robot en session SSH.
Tout d'abord, il faut localiser le chemin vers la carte.yaml
et la charger en utilisant la commande suivante (ne pas oublier d'ajouter le namespace du robot à la fin de la commande) :
ros2 launch turtlebot4_navigation localization.launch.py map:=path_to_map.yaml namespace:=/robot_namespace
Ensuite, lancez la navigation :
ros2 launch turtlebot4_navigation nav2.launch.py namespace:=/robot_namespace
Maintenant, lancez le noeud ROS de navigation personnalisé pour vos besoins. (Les exemples de noeuds ROS pour la navigation sont disponibles sur la page officielle TurtleBot 4 Navigator · User Manual).
Astuce : pour trouver les coordonnées d'un point de la carte, lisez la partie Navigation avec RViz ci-dessous.
Attention, l'argument de commande pour le namespace n'a pas la même syntaxe entre les commandes ros2 run et ros2 launch 🙃
ros2 run my_navigation_pkg my_navigation_node --ros-args --remap __ns:=/robot_namespace
Vous pouvez désormais lancer un autre terminal et exécuter RViz2 pour voir la carte :
rviz2
ou cette commande pour voir toutes les vues relatives au robot (attention, le namespace semble ne pas fonctionner et il faut modifier les topics d'entrée à la main) :
ros2 launch turtlebot4_viz view_robot.launch.py namespace:=/robot_namespace
missing frame [map].
Malgré cela, si vous exécutez les commandes comme indiqué dans ce document, la navigation devrait fonctionner même si les terminaux affichent des erreurs.
Mise à jour : Nous avons découvert que les diagnostiques du TurtleBot4 consommait énormément de ressources CPU, ralentissant drastiquement la RaspberryPi. Nous avons donc désactivé cette fonctionnalité, depuis l'interface turtlebot4-setup du robot ou en mettant la variable TURTLEBOT4_DIAGNOSTICS=0
dans le fichier /etc/turtlebot4/setup.bash
.
Nous avons également remarqué qu'en raison de fréquentes surcharges CPU de la create3, les horloges internes de la raspberry et de la create3 se désynchronisées, causant des problèmes de timestamp
dans les terminaux pendant la navigation.
Pour remédier à cela, exécuter la commande turtlebot4-ntpd-sync
en SSH dans la raspberry pi du robot (Plus d'infos ici)
Note: Nous n'avons pu exécuter la navigation que sur le turtlebot lite_1 et pro_1.
Suivre les mêmes étapes qu'au-dessus sauf le lancement du noeud ROS. La navigation peut s'effectuer avec les outils Nav2 intégrés à RViz2.
-
Définir la
pose initiale
en fonction de l'emplacement réel du robot reporté sur la carte générée -
Utiliser l'outil
nav2 goal
pour choisir une destination
Vous pouvez utiliser Publish Point
et voir ses coordonnées relatives à la pose initiale du robot en écoutant le topic clicked_point
. Cet outil peut s'avérer pratique pour écrire un suivi de points dans un noeud ROS python / C++.
ros2 topic echo /clicked_point
- [FR]
- [EN]