Gazebo | Ignition | Community
Ask Your Question
0

Dampening parameter ignored?

asked 2020-04-03 04:24:02 -0500

Eisenhorn gravatar image

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 get_joint_properties, 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

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
0

answered 2021-05-19 22:12:59 -0500

Adam Gronewold gravatar image

updated 2021-05-19 22:15:05 -0500

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 <dynamic> inside joints, <limit> 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.

edit flag offensive delete link more
Login/Signup to Answer

Question Tools

1 follower

Stats

Asked: 2020-04-03 04:24:02 -0500

Seen: 64 times

Last updated: May 19