Aller au contenu principal

đŸ› ïž 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 :

  1. Lancez PlotJuggler depuis votre terminal :
ros2 run plotjuggler plotjuggler
  1. Dans l’onglet Streaming, cliquez sur ROS Topic Subscriber et sĂ©lectionnez /joint_states, puis appuyez sur Start.

  2. Faites glisser les positions des joints sur le graphique pour les visualiser en temps réel.

  3. 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Ă©.

Astuce : Téléopération

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 :

  1. Sélectionnez le planning group arm.
  2. Déplacez la sphÚre bleue (goal position/orientation).
  3. Cliquez sur Plan pour générer une trajectoire.
  4. Cliquez sur Execute pour exécuter le mouvement.
💡 Astuce

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 :​
  1. Dans l’onglet Planning, section Query :
  2. Définissez le Start state sur current.
  3. Définissez le Goal state sur un état du gripper (ouvert / fermé).
  4. Sélectionnez le planning group gripper.
  5. Cliquez sur Plan, puis Execute.
❓ Questions de comprĂ©hension​
  • đŸ§© Quelle est la diffĂ©rence entre les groupes arm et gripper ?
  • 🎯 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 :

  1. Lancez MoveIt.
  2. 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)​

astuce

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 :

  1. ⚙ Initialise l'interface MoveIt pour l’OpenManipulator-X
  2. 🎯 Planifie un mouvement de l’effecteur vers une position cible cartĂ©sienne
  3. đŸ€– ExĂ©cute le mouvement planifiĂ©
  4. 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