Note: Dans ce tutoriel on considère que vous avez créé votre propre fichier URDF ou que vous utilisez un des fichiers urdf existant pour PR2.
(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Analyser un fichier urdf

Description: Ce tutoriel vous enseigne comment utiliser l'analyseur urdf.

Tutorial Level: BEGINNER

Next Tutorial: Maintenant que vous savez comment analyser un fichier urdf, vous pouvez start using the KDL parser, or use the robot state publisher on your own robot

Lire un fichier URDF

Ce tutoriel commence où le précédent fini. Vous devriez toujours avoir votre fichier my_robot.urdf avec la description du robot ci-dessous

link.png

Commençons d'abord par créer un package avec les dépendances pour l'analyseur urdf dans notre "sandbox" :

  $ roscd
  $ cd sandbox
  $ roscreate-pkg testbot_description urdf
  $ roscd testbot_description
  $ rosmake

  $ cd ~/catkin_ws/src
  $ catkin_create_pkg testbot_description urdf
  $ cd testbot_description

Maintenant créons un dossier /urdf pour stocker le fichier urdf récement créé :

mkdir urdf

Suivant la convention de toujours stocker votre fichier URDF de votre robot dans un package ROS nommé MYROBOT_description et avec un sous dossier nommé /urdf. Les autres sous dossiers normalisés de votre package de description de votre robot sont /meshes, /media et /cad, semblable à ça :

/MYROBOT_description
  package.xml
  CMakeLists.txt
  /urdf
  /meshes
  /materials
  /cad

Ensuite, copiez votre fichier my_robot.urdf dans le package et le dossier que l'on vient de créer :

  $ cp /path/to/.../testbot_description/urdf/my_robot.urdf .

Créez un dossier src/ et ouvrez votre editeur de texte pour créer un fichier appelé src/parser.cpp:

   1 #include <urdf/model.h>
   2 #include "ros/ros.h"
   3 
   4 int main(int argc, char** argv){
   5   ros::init(argc, argv, "my_parser");
   6   if (argc != 2){
   7     ROS_ERROR("Need a urdf file as argument");
   8     return -1;
   9   }
  10   std::string urdf_file = argv[1];
  11 
  12   urdf::Model model;
  13   if (!model.initFile(urdf_file)){
  14     ROS_ERROR("Failed to parse urdf file");
  15     return -1;
  16   }
  17   ROS_INFO("Successfully parsed urdf file");
  18   return 0;
  19 }

Tout se passe aux lignes 12-13: Error: No code_block found Ici nous créons un objet analyseur (a parser object), et on l'initialise à partir d'un fichier dont on lui passe le nom. La méthode initFile renvoie vrai si le fichier URDF a été analysé avec succès.

Maintenant essayons d'exécuter ce code. D'abord ajoutez ces lignes à votre fichier CMakeList.txt :

  rosbuild_add_executable(parser src/parser.cpp)

Construisez votre package, et exécutez le.

  $ make
  $ ./bin/parser my_robot.urdf

Maintenant essayons d'exécuter ce code. D'abord ajoutez ces lignes à votre fichier CMakeList.txt :

 add_executable(parser src/parser.cpp)
 target_link_libraries(parser ${catkin_LIBRARIES})

Construisez votre package, et exécutez le.

  $ catkin_make
  $ .<path>/parser <path>my_robot.urdf
  # ./devel/lib/robot_description/parser /src/robot_description/urdf/my_robot.urdf (for example)

La sortie devrait ressembler à ça :

  [ INFO] 1254520129.560927000: Successfully parsed urdf file

Maintenant regardons le code API pour voir comment utiliser le modèle URDF que l'on vient de créer. Un bon exemple d'un model URDF en action est rviz's Robot::load.

Wiki: fr/urdf/Tutorials/Parse a urdf file (last edited 2014-01-17 07:39:58 by PascalRey)