Robotics StackExchange | Archived questions

Dampening parameter ignored?

Hello,

I have a description file for a robot arm. The URDF is generated by an XACRO file. Within the joint tag I have a dynamics dampening tag

<joint name="arm_joint_4" type="revolute">
        <origin xyz="${arm_joint_4_offset_x} ${arm_joint_4_offset_y} ${arm_joint_4_offset_z}" rpy="${M_PI} 0 ${150 * M_PI / 180}"/>
        <axis xyz="0 0 1"/>
        <limit lower="0.016" upper="5.75" effort="100" velocity="${(0.95 * 1)}"/>
        <parent link="arm_link_3"/>
        <child link="arm_link_4"/>
        <dynamics damping="0.7" />
    </joint>

Nevertheless the following ca be observed.

If you check the properties of the respective link of the modell in the Gazebo Client GUI one can see that values are parsed at least.

C:\fakepath\gui.PNG

But if you call the gazebo service getjointproperties, one can see that damping: [] is empty.

rosservice call /gazebo/get_joint_properties "joint_name: 'arm_joint_4'"
type: 0
damping: []
position: [4.2]
rate: [0.0]
success: True
status_message: "GetJointProperties: got properties"

Now its possible to set the values after the simulation is loaded

rosservice call /gazebo/set_joint_properties "joint_name: 'arm_joint_4'
ode_joint_config:
  damping: [0.7]
  hiStop: [0]
  loStop: [0]
  erp: [0.2]
  cfm: [0]
  stop_erp: [0]
  stop_cfm: [0]
  fudge_factor: [0]
  fmax: [0]
  vel: [0]"

But this is not optimal. Do I get something wrong?

BR

Asked by Eisenhorn on 2020-04-03 04:24:02 UTC

Comments

Answers

Not sure if you are still working on your project, however I believe this is a topic which is important which justifies a response. Those inexperienced with ROS and/or Gazebo are often filtered through the ROS tutorials and the Gazebo tutorials at the same time, making it seem like they are entirely compatible projects, which is not true. If you started learning in ROS it is likely the case that you have made a model using URDF format. While you can use URDF with Gazebo and can load URDF files without an error, when Gazebo launches it converts to SDF behind the scenes and many important properties you so carefully built in the URDF are either partially ignored, or ignored entirely. This includes inside joints, in many joint types, and a handful of other tags. There are comments buried around on Q&A forums for both Gazebo and ROS which discuss this if you want to keep digging. Personally I think just letting these problems be present behind the scenes is one of the biggest things limiting Gazebo and ROS. There have been a few attempts to resolve these problems by making URDF/SDF converters or coding up ways to work around it, but it seems that the projects tend to be left for dead, leaving new users wasting many hours thinking they are coding a real functionality improperly - but the functionality isn't there at all.

Either move to SDF format and forget about ROS entirely or stick with URDF and make your own plugin which will set those properties.

Asked by Adam Gronewold on 2021-05-19 22:12:59 UTC

Comments