ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Hi @teshansj,

The main question here is why you want to use the native Gazebo description format with ROS utilities. Looking at the robot_state_publisher implementation you can see that it uses a KDL tree to parse only URDFs, that are the standard robot description format used in ROS, since RST is a ROS application you cannot expect it can parse other than the standard formats.

The second question is if there is a real need for using a SDF since ROS already support a direct translation between: Xacro -> URDF -> SDF to be able to spawn models on Gazebo worlds. So from here we reach this point in your question:

_I want to created a 6 wheeled robot model with two wheels having shock absorbers (prismatic joints with damping and spring actions). To my understanding, this cannot be done using URDF_

An that is actually not true, since you can create 4 normal wheels and another 2 with a shock absorber joint, I know this because I was able to implement that in a Gazebo Car model. The most important thing here is that while you cannot use URDF things in SDF files, you can use SDF tags in URDF files. And that is done with the <gazebo> tag.

So if you really want to generate a shock absrober joint you can use in a URDF the <gazebo> tag with the reference name as your joint name and provide the proper dynamic parameters.

This will look like:

For the joint

<joint name="shock" type="prismatic">
  <parent link=parent"/>
  <child link="child"/>
  <origin xyz="x y z" rpy="r p y" />
  <axis xyz="x y z"/>
  <limit lower="low" upper="upp" effort="eff" velocity="vel"/>
  <dynamics damping="damp" friction="fric"/>
</joint>

and for the SDF

<gazebo reference="shock">
  <implicitSpringDamper>true</implicitSpringDamper>
  <springStiffness>[stiffness]</springStiffness>
  <springReference>[reference]</springReference>
</gazebo>

That should fill the SDF <dynamic> tag to generate a good shock absorber joint.

With that you willl have your URDF and no problems when using RSP. Apart from that I recommend you Xacro instead of URDF.

Hope it helps.

Regards.