Skip to content

Robot Model Visualization

Moby Description Package

The moby_description package includes the model files (URDF) for use with RViz and Gazebo simulator.

├── moby_description
    ├── urdf
    ├── launch
    ├── rviz_config
    ├── meshes
    └──  ...

Robot Model

  • URDF (The Universal Robotic Description Format): an XML-format file describing the kinematic and dynamic elements of the robot.
  • Xacro: an XML macro language that constructs shorter and more readable XML files by using macros that expand to larger XML expressions.

In the urdf folder of the moby_description package, There's a config folder which contains all config for Moby models (MobyRP and MobyRP_V3) The other xacro files read the config files and build the description of the robot.

The diagram below show the relationship of the files

joint_limits ────────┐
kinematics ──────────┤
physical_parameters ─┤
visual_parameters ───┤
        moby_common ─┤
  moby_transmission ─┤
          materials ─┴─ moby_macro─moby.urdf

For more information about urdf and xacro, please visit ROS1 build model tutorial

Launching RViz

Moby models can be visualized with RViz. launch file is a file for launching a number of ROS nodes at the same time. The following command is used to launch the robot description and visualization for the Moby robot model in ROS.

roslaunch moby_description moby_description.launch moby_type:=moby_rp
By specifying the moby_type as "moby_rp", the launch file will load the appropriate configuration files and launch the necessary nodes to display the robot in a visualization tool like RViz.

Now you should see windows launched.

by tweaking the joint position value of joint_states_publisher, the position of the Indy robot and Moby wheels in RViz can be changed.

Launch File

The code below is moby_description.launch, from the command above.

<?xml version="1.0"?>
<launch>
    <arg name="prefix"      default=""/>
    <arg name="name"        default="moby"/>
    <arg name="moby_type"   default=""/>
    <arg name="rviz"        default="true"/>
    <arg name="sim_gazebo"  default="false"/> <!--is sim gazebo?-->
    <arg name="joint_state" default="true"/> <!--need joint state? -->

    <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find moby_description)/urdf/moby.urdf.xacro'
        prefix:=$(arg prefix)
        name:=$(arg name)
        moby_type:=$(arg moby_type)
        sim_gazebo:=$(arg sim_gazebo)"/>

    <!--joint state-->
    <group if="$(eval arg('rviz') == true and arg('sim_gazebo') == false and arg('joint_state') == true)">
        <node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui"/>
    </group>

    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"/>

    <!--rviz-->
    <node if="$(arg rviz)" pkg="rviz" type="rviz" name="rviz" args="-d $(find moby_description)/rviz_config/moby.rviz"/>

</launch>
  • robot_description: Reads moby.urdf.xacro also, it is parameters for joint_state_publisher node.

  • joint_state_publisher: publishes the joint positions of robot_description, with /joint_states topic.

  • robot_state_publisher: subscribes /joint_states topic, and publishes transform of each link.

  • rviz : launches RViz node, loading rviz configuration file (moby_description/rviz_config/moby.rviz). Subscribes tf published by robot_state_publisher node, and visualizes them.