States Description Format (USDF) review
Proposer: Sachin Chitta, Kaijen Hsiao, Gil Jones, Ioan Sucan, John Hsu
Contents
Intent
This format is intended to capture the state information for a given robot described by an URDF. The specified state format should allow multiple robotic system components to share the state(s) of a robot, serve as a restart file format for robot simulation and enables offline introspection/post processing tools.
Description
Tags
<world_state>
- Purpose: This is the root tag that for this document. All information is included in this tag.
Elements: <frame> <model_state>
- Attributes:
<model_state>
- Purpose: This is the root tag that for this document. All information is included in this tag.
Elements: <parent> <pose> <twist> <link_state> <joint_state>
- Attributes: name
name
- Purpose: Name of the model
<parent> name
Purpose: A string indicating frame name or name of another model_state to be the reference frame of these states. Keywords world can be used to reference absolute inertial frame. If left empty, default is world.
- Elements:
- Attributes:
<pose> 6-tuple
Purpose: A 6-tuplet (x,y,z,roll,pitch,yaw) used to specify the pose of a link, relative to the <parent> frame.
- Elements:
- Attributes:
<twist> 6-tuple
Purpose: A 6-tuplet (x,y,z,roll,pitch,yaw) used to specify the twist of a link, relative to the <parent> frame.
- Elements:
- Attributes:
<link_state>
- Purpose: use this to specify the state of a link in the robot
Elements: <pose> <twist> <wrench>
- Attributes: name
name
- Purpose: Name of the link
<pose> 6-tuple
Purpose: A 6-tuplet (x,y,z,roll,pitch,yaw) used to specify the pose of a link, relative to the frame of the <model_state>.
- Elements:
- Attributes:
<twist> 6-tuple
Purpose: A 6-tuplet (x,y,z,roll,pitch,yaw) used to specify the twist of a link, relative to the <origin> of the link
- Elements:
- Attributes:
<wrench> 6-tuple
Purpose: A 6-tuplet (x,y,z,roll,pitch,yaw) used to specify the wrench exerted on a link, relative to the <origin> of the link
- Elements:
- Attributes:
<joint_state>
- Purpose: use this to specify the state of a joint in the robot
Elements: <positions> <velocities> <torques>
- Attributes: name
name
- Purpose: Name of the joint
<positions> double[]
- Purpose: array of positions of the DOF's of the joint
- Elements:
- Attributes:
<velocities> double[]
- Purpose: array of velocities of the DOF's of the joint
- Elements:
- Attributes:
<torques> double[]
- Purpose: array of torques measured for each DOF of the joint
- Elements:
- Attributes:
<frame>
- Purpose: Frame of reference relative to global frame or anth
Elements: <pose> <twist> <parent>
- Attributes: name
name string
- Purpose: Name of this frame
<parent> name
Purpose: A string indicating frame name or name of another model_state to be the reference frame of these states. Keywords world can be used to reference absolute inertial frame. If left empty, default is world.
- Elements:
- Attributes:
<pose> 6-tuple
Purpose: A 6-tuplet (x,y,z,roll,pitch,yaw) used to specify the pose of a link, relative to the parent frame or the parent <model_state>.
- Elements:
- Attributes:
<twist> 6-tuple
Purpose: A 6-tuplet (x,y,z,roll,pitch,yaw) used to specify the twist of a link, relative to the <origin> of the link
- Elements:
- Attributes:
Generic Example
<world name="world_1"> <model_state name="pr2"> <parent>odom</parent> <pose>0 0 0 0 0 0</pose> <twist>0 0 0 0 0 0</twist> <link_state name="r_shoulder_pan_link> <pose>1 0 1 0 0 0</pose> <twist>0 0 0 0 0 0</twist> <wrench>0 0 0 0 0 0</twist> </link_state> </model_state> <frame name="odom"> <parent>world</parent> <pose>0 0 0 0 0 0</pose> <twist>0 0 0 0 0 0</twist> </frame> </world>