Skip to content

Introduction to the Rm_description Package

The rm_description package is intended to display the robot model and TF, through which, the virtual robotic arm in the computer is linked with the real robotic arm in reality. Additionally, it is important for the control of moveit2.
The package will be introduced in detail from the following three aspects with different purposes:

    1. Package application: Learn how to use the package.
    1. Package structure description: Understand the composition and function of files in the package.
    1. Package topic description: Know the topics of the package for easy development and use.

Code link: https://github.com/RealManRobot/ros2_rm_robot/tree/humble/rm_description

1. Application of the rm_description package

After the environment configuration and connection are complete, the node can be started directly by the following command to run the rm_description package.

  • The command to start the standard version of the manipulator is:

    ros2 launch rm_description rm_<arm_type>_display.launch.py
  • The command to start the six-axis force version of the manipulator is (eco63, gen 72 and gen72_II is not available):

    ros2 launch rm_description rm_<arm_type>_6f_display.launch.py
  • The command to start the integrated six-axis force version of the manipulator is (eco63, gen 72 and gen72_II is not available):

    ros2 launch rm_description rm_<arm_type>_6fb_display.launch.py

Generally, the above <arm_type> is required for the actual type of the robotic arm and optional for 65, 63, eco65, eco63, 75, gen72, and gen72_II.
For the 65 robotic arm, its start command is as follows:

ros2 launch rm_description rm_65_display.launch.py

After the node is started successfully, the following screen will pop up. image Then, start the rm_driver node.

ros2 launch rm_driver rm_<arm_type>_driver.launch.py

After a successful start, check the state of the robotic arm in the rviz2 and run the following command to start the rviz2.

rviz2

Open the robot model with the following configuration. image Locate the corresponding configuration file in the rviz folder of the rm_description package. image After loading, the current state of the robotic arm is available in the rviz2. image

2. Structure description of the rm_description package

├── CMakeLists.txt                # compilation rule file
├── launch
│   ├── rm_63_6f_display.launch.py  # 63 six-axis force launch file
│   ├── rm_63_6fb_display.launch.py # 63 integrated six-axis force launch file
│   ├── rm_63_display.launch.py     # 63 launch file
│   ├── rm_65_6f_display.launch.py  # 65 six-axis force launch file
│   ├── rm_65_6fb_display.launch.py # 65 integrated six-axis force launch file
│   ├── rm_65_display.launch.py     # 65 launch file
│   ├── rm_75_6f_display.launch.py  # 75 six-axis force launch file
│   ├── rm_75_6fb_display.launch.py # 75 integrated six-axis force launch file
│   ├── rm_75_display.launch.py     # 75 launch file
│   ├── rm_eco65_6f_display.launch.py  # eco65 six-axis force launch file
│   ├── rm_eco65_6fb_display.launch.py # eco65 integrated six-axis force launch file
│   ├── rm_eco65_display.launch.py  # eco65 launch file
│   ├── rm_eco63_6fb_display.launch.py # eco63 integrated six-axis force launch file
│   ├── rm_eco63_display.launch.py  # eco63 launch file
│   └── rm_gen72_display.launch.py  # gen72 launch file
├── meshes                       # model file storage folder
│   ├── rm_63_arm                 #63 robotic arm model file storage folder
│   │   ├── base_link.STL
│   │   ├── link1.STL
│   │   ├── link2.STL
│   │   ├── link3.STL
│   │   ├── link4.STL
│   │   ├── link5.STL
│   │   ├── link6_6f.STL
│   │   ├── link6_6fb.STL
│   │   └── link6.STL
│   ├── rm_65_arm                 #65 robotic arm model file storage folder
│   │   ├── base_link.STL
│   │   ├── link1.STL
│   │   ├── link2.STL
│   │   ├── link3.STL
│   │   ├── link4.STL
│   │   ├── link5.STL
│   │   ├── link6_6f.STL
│   │   ├── link6_6fb.STL
│   │   └── link6.STL
│   ├── rm_75_arm                 #75 robotic arm model file storage folder
│   │   ├── base_link.STL
│   │   ├── link1.STL
│   │   ├── link2.STL
│   │   ├── link3.STL
│   │   ├── link4.STL
│   │   ├── link5.STL
│   │   ├── link6.STL
│   │   ├── link7_6f.STL
│   │   ├── link7_6fb.STL
│   │   └── link7.STL
│   └── rm_eco65_arm                 #eco65 robotic arm model file storage folder
│   │   ├── baselink.STL
│   │   ├── Link1.STL
│   │   ├── Link2.STL
│   │   ├── Link3.STL
│   │   ├── Link4.STL
│   │   ├── Link5.STL
│   │   ├── Link6_6f.STL
│   │   ├── Link6_6fb.STL
│   │   └── Link6.STL
│   └── rm_eco63_arm                 #eco63 robotic arm model file storage folder
│   │   ├── baselink.STL
│   │   ├── Link1.STL
│   │   ├── Link2.STL
│   │   ├── Link3.STL
│   │   ├── Link4.STL
│   │   ├── Link5.STL
│   │   ├── Link6_6fb.STL
│   │   └── Link6.STL
│   └── rm_gen72_arm                 #gen72 robotic arm model file storage folder
│       ├── base_link.STL
│       ├── Link1.STL
│       ├── Link2.STL
│       ├── Link3.STL
│       ├── Link4.STL
│       ├── Link5.STL
│       ├── Link6.STL
│       └── Link7.STL
├── package.xml
├── README_CN.md
├── README.md
├── rviz                               #rviz2 configuration file storage folder
│   ├── rm_63.rviz
│   ├── rm_65.rviz
│   ├── rm_75.rviz
│   └── rm_eco65.rviz
│   └── rm_eco63.rviz
│   └── rm_gen72.rviz
├── textures
└── urdf
    ├── display_arm.rviz
    ├── rm_65_6f.urdf                   #65 six-axis force urdf description file
    ├── rm_65_6fb.urdf                  #65 integrated six-axis force urdf description file
    ├── rm_65_description.csv
    ├── rm_65_gazebo.urdf               #65 gazebo simulation urdf description file
    ├── rm_65_gazebo.urdf.xacro         #65 gazebo simulation xacro description file
    ├── rm_65.urdf                      #65 urdf description file
    ├── rm_65.urdf.xacro                #65 xacro description file
    ├── rm_75_6f.urdf                   #75 six-axis force urdf description file
    ├── rm_75_6fb.urdf                  #75 integrated six-axis force urdf description file
    ├── rm_75_description.csv
    ├── rm_75_gazebo.urdf               #75 gazebo simulation urdf description file
    ├── rm_75_gazebo.urdf.xacro         #75 gazebo simulation xacro description file
    ├── rm_75.urdf                      #75 urdf description file
    ├── rm_75.urdf.xacro                #75 xacro description file
    ├── rm_eco65_6f.urdf                #eco65 six-axis force urdf description file
    ├── rm_eco65_6fb.urdf               #eco65 integrated six-axis force urdf description file 
    ├── rm_eco65.csv
    ├── rm_eco65_gazebo.urdf            #eco65 gazebo simulation urdf description file
    ├── rm_eco65_gazebo.urdf.xacro      #eco65 gazebo simulation xacro description file
    ├── rm_eco65.urdf                   #eco65 urdf description file
    ├── rm_eco65.urdf.xacro             #eco65 xacro description file
    ├── rm_eco63_6fb.urdf               #eco63 integrated six-axis force urdf description file
    ├── rm_eco63.csv
    ├── rm_eco63_gazebo.urdf            #eco63 gazebo simulation urdf description file
    ├── rm_eco63_gazebo.urdf.xacro      #eco63 gazebo simulation xacro description file
    ├── rm_eco63.urdf                   #eco63 urdf description file
    ├── rm_eco63.urdf.xacro             #eco63 xacro description file
    ├── rm_gen72.csv
    ├── rm_gen72_gazebo.urdf            #gen72 gazebo simulation urdf description file
    ├── rm_gen72.urdf                   #gen72 urdf description file
    ├── rml_63_6f.urdf                  #63 six-axis force urdf description file
    ├── rml_63_6fb.urdf                 #63 integrated six-axis force urdf description file
    ├── rml_63_description.csv
    ├── rml_63_gazebo.urdf              #63 gazebo simulation urdf description file
    ├── rml_63_gazebo.urdf.xacro        #63 gazebo simulation xacro description file
    ├── rml_63.urdf                     #63 urdf description file
    └── rml_63.urdf.xacro               #63 xacro description file

3. Topic description of the rm_description package

The following are the topics of the package:

  Subscribers:
    /joint_states: sensor_msgs/msg/JointState
    /parameter_events: rcl_interfaces/msg/ParameterEvent
  Publishers:
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /robot_description: std_msgs/msg/String
    /rosout: rcl_interfaces/msg/Log
    /tf: tf2_msgs/msg/TFMessage
    /tf_static: tf2_msgs/msg/TFMessage
  Service Servers:
    /robot_state_publisher/describe_parameters: rcl_interfaces/srv/DescribeParameters
    /robot_state_publisher/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
    /robot_state_publisher/get_parameters: rcl_interfaces/srv/GetParameters
    /robot_state_publisher/list_parameters: rcl_interfaces/srv/ListParameters
    /robot_state_publisher/set_parameters: rcl_interfaces/srv/SetParameters
    /robot_state_publisher/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
  Service Clients:

  Action Servers:

  Action Clients:

Subscribers:

  • joint_states: refers to the current state of the robotic arm. It is published when the rm_driver package runs, and then the model in the rviz moves according to the actual state of the robotic arm.

Publishers:

  • /tf and /tf_static: describe the frame transformation (TF) relationship between the joint of the robotic arm and the joint. There is very little information on the remaining topics and their usage scenes, but you can do your own research.