Converting SDFormat XML into URDF C++ structuresr

Demonstrating SDFormat XML as a robot description format instead of URDF XML using sdformat_urdf parser plugin.

The parser aims to remove the need for maintaining multiple description files for the same robot. Other ROS nodes in the project can then directly use the generated URDF C++ structures for, say, visualizing the robot movements in RViz.


ezgif.com-gif-maker

A SDFormat file needs to be published on /robot_description topic by robot_state_publisher. This triggers urdf_parser_plugin to find a suitable parser, sdformat_urdf in this case which converts it to URDF C++ DOM structures. The joint states and TFs are mapped using ros_gz_bridge . The mapped topics enables RViz to visualize the RobotModel wherein odometry is simulated by a Gazebo world.

Checkout the sdf_parser demo for more details on how to implement this functionality.
(Note the SDFormat file needs to be constructed with some considerations since both the formats cannot fully represent each other. More details here.)

Credits: This development is supported by Toyota Research Institute and Monterey Bay Aquarium Research Institute under different projects.
Developers: Shane Loretz, Dharini Dutia

3 Likes