Ask Your Question

Revision history [back]

Hi @muttidrhummer!

I have created a video that answer exactly this question.

Summarizing, this can be accomplished by loading a URDF file, parsing it and calling the getName() method of the C++ Urdf model.

To see how to load and parse a URDF file, you can follow the Parse a urdf file tutorial.

After you create your parser.cpp, before the return 0; you should add

ROS_INFO("The robot name is: %s", model.getName().c_str());

to print the name of the robot on the URDF file, as we can see on the code below:

#include <urdf/model.h>
#include "ros/ros.h"

int main(int argc, char** argv){
  ros::init(argc, argv, "my_parser");
  if (argc != 2){
    ROS_ERROR("Need a urdf file as argument");
    return -1;
  }
  std::string urdf_file = argv[1];

  urdf::Model model;
  if (!model.initFile(urdf_file)){
    ROS_ERROR("Failed to parse urdf file");
    return -1;
  }
  ROS_INFO("Successfully parsed urdf file");
  ROS_INFO("The robot name is: %s", model.getName().c_str());
  return 0;
}

After compile the code and generate the executable called parser following the Parse a urdf file tutorial, you can call it with the path of the URDF file as argument.

Something like: rosrun your_package_name parser /path/to/your/file.urdf

If you still have any doubt, just check the video.