đ ïž Travaux pratique
đ§ Partie 1 â Comprendre la reprĂ©sentation dâun robot sous ROS 2â
Un robot intĂ©grĂ© dans lâĂ©cosystĂšme ROS 2 est constituĂ© au minimum de deux Ă©lĂ©ments essentiels :
- đ§ Un descripteur URDF (Unified Robot Description Format) qui dĂ©crit la structure du robot (liens, joints, dimensionsâŠ)
- đ§ Un contrĂŽleur qui permet dâinteragir avec les capteurs et actionneurs du robot
đ 1. Visualisation et comprĂ©hension du descripteur URDFâ
Pour générer et visualiser la structure du robot OpenMANIPULATOR-X, suivez les étapes suivantes :
đ ïž GĂ©nĂ©ration du fichier URDFâ
đ» Dans un terminal, exĂ©cutez :
ros2 run xacro xacro $HOME/ros_workshop_ws/src/open_manipulator/open_manipulator_description/urdf/om_x/open_manipulator_x.urdf.xacro -o /tmp/open_manipulator_x.urdf
đ GĂ©nĂ©ration de la visualisation de lâarbre URDFâ
Ensuite, convertissez le fichier en une représentation graphique :
urdf_to_graphiz /tmp/open_manipulator_x.urdf
Un fichier PDF sera gĂ©nĂ©rĂ© dans le rĂ©pertoire courant. Vous pouvez lâouvrir avec un visualiseur PDF :
evince open_manipulator_x.urdf.pdf
Cela vous permettra dâobserver lâarbre des liens et des articulations du robot, utile pour comprendre la cinĂ©matique du bras.
đ€ 2. Visualisation 3D du robot et de ses articulationsâ
Pour visualiser un modĂšle interactif du robot dans RViz (ou dans un visualiseur 3D similaire), lancez le fichier suivant :
ros2 launch open_manipulator_description model_x.launch.py
Cette commande :
- đŠ Charge la description URDF du robot
- đ§© Initialise les nĆuds nĂ©cessaires Ă la visualisation
- đŒïž Affiche le robot dans RViz
- đïž Permet de manipuler les joints du robot via des sliders ou par lâenvoi de messages ROS
đĄ 2.a. Explorer les topics publiĂ©s par le robotâ
Ă lâaide de la commande ros2 topic, explorez les communications du robot.
- Quel est le nom du topic qui publie lâĂ©tat courant des articulations (positions, vitesses, efforts) ?
- Quel est le type du message transmis par ce topic ?
- Ă quelle frĂ©quence (en Hz) le robot met-il Ă jour lâĂ©tat de ses joints ?
đ 2.b. Tracer la courbe des positions des moteurs en temps rĂ©elâ
đč Option 1 â Avec rqt_plotâ
Lancez lâoutil de visualisation graphique intĂ©grĂ© Ă ROS 2 :
ros2 run rqt_plot rqt_plot
Dans le champ de saisie, entrez le nom du topic que vous souhaitez tracer. Pour les positions articulaires, utilisez :
/joint_states/position[<indice_du_joint>]
đą Lâindice dĂ©pend de lâordre des joints dans le message JointState. Par exemple, si joint3 est le quatriĂšme Ă©lĂ©ment, utilisez position[3].
đč Option 2 â Avec PlotJugglerâ
PlotJuggler offre une interface plus puissante et interactive. Pour lâinstaller :
sudo apt install ros-jazzy-plotjuggler ros-jazzy-plotjuggler-ros
Ensuite :
- Lancez PlotJuggler depuis votre terminal :
ros2 run plotjuggler plotjuggler
-
Dans lâonglet Streaming, cliquez sur ROS Topic Subscriber et sĂ©lectionnez
/joint_states, puis appuyez sur Start. -
Faites glisser les positions des joints sur le graphique pour les visualiser en temps réel.
-
Bougez avec les sliders pour observer lâĂ©volution des valeurs en temps rĂ©el.
đ§ Partie 2 â Manipulation du robot OpenManipulator-Xâ
0. Lancement du robot dans Gazeboâ
Pour simuler le robot dans lâenvironnement physique Gazebo, utilisez la commande suivante :
ros2 launch open_manipulator_bringup gazebo.launch.py
Vous devriez voir le robot OpenManipulator-X apparaĂźtre dans la scĂšne Gazebo, prĂȘt Ă ĂȘtre manipulĂ©.
Remarque : Gardez Gazebo ouvert en permanence pour les manipulations Ă venir.
1. MoveIt avec RViz : planification et exĂ©cutionâ
đ Cela lance Gazebo avec le robot dĂ©jĂ placĂ© dans la scĂšne, prĂȘt Ă ĂȘtre manipulĂ©.
Vous pouvez contrĂŽler le robot via le clavier avec cette commande :
ros2 run open_manipulator_teleop keyboard_control_x
đ€ Lancement de MoveIt (planification de mouvement)â
Pour utiliser MoveIt avec le robot OpenManipulator-X, exécutez :
LC_NUMERIC=en_US.UTF-8 ros2 launch open_manipulator_moveit_config moveit_core.launch.py
Cela ouvre RViz avec MoveIt configurĂ© et prĂȘt Ă planifier les mouvements du bras manipulateur.
đź Interaction avec MoveIt dans RVizâ
Dans RViz et dans lâonglet MotionPlanning, vous pouvez interagir avec le robot de la maniĂšre suivante :
- Sélectionnez le planning group
arm. - Déplacez la sphÚre bleue (goal position/orientation).
- Cliquez sur
Planpour générer une trajectoire. - Cliquez sur
Executepour exécuter le mouvement.
Le bouton Plan and Execute permet de faire les deux étapes en un seul clic.
đ§Ș Explorez :
- Le déplacement du bras du robot en manipulant la sphÚre bleue.
- Le changement de goal state.
- La modification des joints dans lâonglet Joint States.
â Questions dâobservationâ
- đ Que reprĂ©sente le robot gris, parfois mobile mais lent ?
- đž Que reprĂ©sente le robot orange (fixe) ?
- đ Que reprĂ©sente le robot gris qui rĂ©pĂšte un mouvement rapide ?
â Tester la planification du gripperâ
Vous pouvez aussi planifier le mouvement du gripper via MoveIt :
đ Ătapes :â
- Dans lâonglet Planning, section Query :
- Définissez le
Start statesurcurrent. - Définissez le
Goal statesur un état du gripper (ouvert / fermé). - Sélectionnez le planning group
gripper. - Cliquez sur
Plan, puisExecute.
â Questions de comprĂ©hensionâ
- 𧩠Quelle est la différence entre les groupes
armetgripper? - đŻ Qu'est-ce quâun planning group dans MoveIt ?
- Ă quoi cela sert-il ?
- Pourquoi en existe-t-il plusieurs ?
2. đ Visualisation et interrogation de lâarbre des transformations (tf)â
đ» Ătapes :
- Lancez MoveIt.
- Dans un nouveau terminal, exécutez la commande suivante :
ros2 run tf2_tools view_frames
Cela gĂ©nĂšre un fichier frames.pdf reprĂ©sentant lâarbre des repĂšres (frames) du robot.
đ Ce fichier montre les mĂȘmes repĂšres que ceux affichĂ©s en rouge-vert-bleu dans RViz. Chaque repĂšre correspond Ă un Ă©lĂ©ment du robot ou de la scĂšne.
â Questions
- Quel est le nom du repĂšre de base du robot ?
- Quels sont les noms des deux repĂšres correspondant aux effecteurs finaux possibles ?
- Quelle est la position actuelle dâun des effecteurs par rapport au repĂšre de base ?
đĄ Pour cela, utilisez la commande suivante (en remplaçant les noms de repĂšres) :
ros2 run tf2_ros tf2_echo <repĂšre_base> <repĂšre_effecteur>
Cette commande affiche la transformation (position et orientation) du repĂšre de lâeffecteur dans celui de base. Vous pouvez noter les coordonnĂ©es de position pour les utiliser ensuite comme cible de planification dans MoveIt.
đ» Partie 3 - Planification avec MoveIt en C++ (OpenManipulator-X)â
Si vous souhaitez utiliser MoveIt avec du code Python, il est recommandĂ© dâutiliser un robot mieux supportĂ© comme le Franka Emika Panda ou lâUR5.
Le bras OpenManipulator-X fonctionne beaucoup mieux avec MoveIt en C++, comme dans la documentation officielle de ROBOTIS.
đŻ Objectifâ
En vous inspirant de lâexemple C++ disponible ici :
đ open_manipulator_playground â GitHub ROBOTIS
Implémentez un programme qui :
- âïž Initialise l'interface MoveIt pour lâOpenManipulator-X
- đŻ Planifie un mouvement de lâeffecteur vers une position cible cartĂ©sienne
- đ€ ExĂ©cute le mouvement planifiĂ©
- Faites en sorte que le bras attrape un petit objet fictice placé devant lui.
đ§Ș Bonusâ
-
Créez un monde Gazebo personnalisé comprenant :
- une table stable
- un petit objet Ă attraper (ex : cube, cylindreâŠ)
-
Ajoutez ce monde Ă votre simulation avec lâOpenManipulator-X, puis :
- Planifiez un mouvement pour saisir lâobjet
- Optionnel : soulevez-le légÚrement pour valider la prise