Overview
The Unified Robot Description Format (URDF) is the standard ROS XML representation of the robot model (kinematics, dynamics, sensors) describing Sawyer.
Sawyer generates his URDF dynamically on robot startup. This model is updated when any gripper is attached or detached, an object is 'grasped' or released and its mass is compensated for, and when new urdf segments are provided/commanded to the gripper plugins. As of SDK versions >= 1.0.0 Sawyer's internal robot model, is loaded to the parameter server on the topic /robot_description
The default URDF for Sawyer is available in the intera_common repository. The package sawyer_description
contains the URDF and accompanying meshes.
Getting a Copy of the URDF from the parameter server
You can now get the current URDF describing your Sawyer.
From a properly initialized Sawyer environment, export the URDF from the /robot_description
parameter on the ROS parameter server where it is stored, to a file of your choice (ex: sawyer_urdf.xml
):
$ rosparam get -p /robot_description | tail -n +2 > sawyer_urdf.xml
The -p
outputs the parameter using pretty print. The output urdf is piped through the tail
command first to remove a dummy first line - an artifact of the pretty print.
Tip: You can check that you now have a proper URDF by running:
$ rosrun urdfdom check_urdf sawyer_urdf.xml
Robot State Publisher
The URDF is used by Sawyer's Robot State Publishers to create a tree of transforms (tfs). In fact, Sawyer has two of such publishers:
- robot_ref_publisher: publishes transforms that reflect the commanded robot state
- robot_state_publisher: publishes transforms that reflect the measured state of the robot
These robot publishers live internal to Sawyer and are accessible to the RSDK over ROS. The "ref" tfs are used by the robot internals, but you may find them useful to see where the robot will move at the next timestep. Otherwise, be sure to use the non-"ref" transforms if you're only interested in the Sawyer's current state.