Arm Descriptions

View Package on GitHub

Overview

This package contains the URDFs and meshes for the many X-Series Interbotix Arms. The STL files for each robot are located in a unique folder inside the meshes directory. Also in the ‘meshes’ directory is the interbotix_black.png picture. The appearance and texture of the robots come from this picture. Next, the URDFs for the robot are located in the urdf directory. They are written in ‘xacro’ format so that users have the ability to customize what parts of the URDF get loaded to the parameter server (see the ‘Usage’ section below for details). Note that all the other Interbotix X-Series Arms core ROS packages in the sub-repo reference this package to launch the robot description.

Structure

../_images/xsarm_descriptions_flowchart_ros2.png

This package contains the xsarm_description.launch.py file responsible for loading parts or all of the robot model. It launches up to four nodes as described below:

  • joint_state_publisher - responsible for parsing the robot_description topic to find all non-fixed joints and publish a sensor_msgs/msg/JointState message with those joints defined.
  • joint_state_publisher_gui - does the same thing as the joint_state_publisher node but with a GUI that allows a user to easily manipulate the joints.
  • robot_state_publisher - uses the URDF specified by the parameter robot_description and the joint positions from the joint_states topic to calculate the forward kinematics of the robot and publish the results via the tf and tf_static topics.
  • rviz - displays the virtual robot model using the transforms in the tf topic.

Usage

This package contains two launch files:

  • xsarm_description.launch.py - should be included in any launch tree in which you want to load and parse the URDF, or can be launched to view any robot model’s URDF in RViz.
  • remote_view.launch.py which simply loads RViz in the proper namespace.

xsarm_description.launch.py

To run this launch file, enter the command below in a terminal. Note that the robot_model argument must be specified as the name of one of the URDF files located in the urdf directory (excluding the ‘.urdf.xacro’ part). For example, to launch the ReactorX-150 arm, type:

$ ros2 launch interbotix_xsarm_descriptions xsarm_description.launch.py robot_model:=rx150 use_joint_pub_gui:=true

This is the bare minimum needed to get up and running. Take a look at the table below to see how to further customize with other launch file arguments.

Argument Description Default Choices
robot_model model type of the Interbotix Arm such as wx200 or rx150.   px100, px150, rx150, rx200, wx200, wx250, wx250s, vx250, vx300, vx300s, mobile_px100, mobile_wx200, mobile_wx250s
robot_name name of the robot (typically equal to robot_model, but could be anything). LaunchConfig(robot_model)  
use_rviz launches RViz if set to true. true true, false
use_joint_pub launches the joint_state_publisher node. false true, false
use_joint_pub_gui launches the joint_state_publisher GUI. false true, false
rvizconfig file path to the config file RViz should load. LocalVar(‘FindPackageShare(pkg= interbotix_xsarm_descriptions) + ‘rviz’ + ‘xsarm_description.rviz’’)  
use_sim_time tells ROS nodes asking for time to get the Gazebo-published simulation time, published over the ROS topic /clock. false true, false
base_link_frame name of the ‘root’ link on the arm; typically base_link, but can be changed if attaching the arm to a mobile base that already has a base_link frame. base_link  
use_gripper if true, the default gripper is included in the robot_description parameter; if false, it is left out; set to false if not using the default gripper. true true, false
show_ar_tag if true, the AR tag mount is included in the robot_description parameter; if false, it is left out; set to true if using the AR tag mount in your project. false true, false
show_gripper_bar if true, the gripper_bar link is included in the robot_description parameter; if false, the gripper_bar and finger links are not loaded. Set to false if you have a custom gripper attachment. true true, false
show_gripper_fingers if true, the gripper fingers are included in the robot_description parameter; if false, the gripper finger links are not loaded. Set to false if you have custom gripper fingers. true true, false
use_world_frame set this to true if you would like to load a ‘world’ frame to the robot_description parameter which is located exactly at the ‘base_link’ frame of the robot; if using multiple robots or if you would like to attach the ‘base_link’ frame of the robot to a different frame, set this to false. true true, false
external_urdf_loc the file path to the custom urdf.xacro file that you would like to include in the Interbotix robot’s urdf.xacro file. ‘’  
hardware_type configures the robot_description parameter to use the actual hardware, fake hardware, or hardware simulated in Gazebo. actual actual, fake, gz_classic
robot_description URDF of the robot; this is typically generated by the xacro command. Command(FindExec(xacro) + ‘ ‘ + LocalVar(‘FindPackageShare(pkg= interbotix_xsarm_descriptions) + ‘urdf’ + LaunchConfig(robot_model)’) + ‘.urdf.xacro ‘ + ‘robot_name:=’ + LaunchConfig(robot_name) + ‘ ‘ + ‘base_link_frame:=’ + LaunchConfig(base_link_frame) + ‘ ‘ + ‘use_gripper:=’ + LaunchConfig(use_gripper) + ‘ ‘ + ‘show_ar_tag:=’ + LaunchConfig(show_ar_tag) + ‘ ‘ + ‘show_gripper_bar:=’ + LaunchConfig(show_gripper_bar) + ‘ ‘ + ‘show_gripper_fingers:=’ + LaunchConfig(show_gripper_fingers) + ‘ ‘ + ‘use_world_frame:=’ + LaunchConfig(use_world_frame) + ‘ ‘ + ‘external_urdf_loc:=’ + LaunchConfig(external_urdf_loc) + ‘ ‘ + ‘hardware_type:=’ + LaunchConfig(hardware_type) + ‘ ‘)  

remote_view.launch.py

To run this launch file, enter the command below in a terminal.

$ ros2 launch interbotix_xsarm_descriptions remote_view.launch.py robot_model:=rx150 use_joint_pub_gui:=true

This is the bare minimum needed to get up and running. Take a look at the table below to see how to further customize with other launch file arguments.

Argument Description Default Choices
robot_name name of the robot (typically equal to robot_model, but could be anything).    
rvizconfig file path to the config file RViz should load. LocalVar(‘FindPackageShare(pkg= interbotix_xsarm_descriptions) + ‘rviz’ + ‘xsarm_description.rviz’’)  

Video Tutorials

Arm Descriptions Package for ROS 2