Gazebo | Ignition | Community
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Simulating Actuated Joint Stiffness

Hello.

I am trying to simulate a joint which actuates a lift using Gazebo 7 and ROS Indigo. The URDF definition for the joint is as follows:

<joint name="lift_joint" type="prismatic">
  <origin xyz="0 0 0.177" rpy="1.5707963267949 0 0" />
  <parent link="chassis_link" />
  <child link="lift_link" />
  <axis xyz="0 1 0" />
  <limit lower="0" upper="0.08" effort="20000.0" velocity="0.02" />
  <dynamics damping="100.0" />
</joint>

The lift is driven by a position controller with these parameters:

<rosparam>
  gazebo_ros_control:
    pid_gains:
      left_wheel_joint: { p: 1.0, i: 0.0, d: 0.0 }
      right_wheel_joint: { p: 1.0, i: 0.0, d: 0.0 }
      lift_joint: { p: 100000.0, i: 1000.0, i_clamp: 1000, d: 1000.0 }
</rosparam>

The problem is that the lift can be easily depressed by another object. Say the lift is given a command to raise. It does so, but when it comes into contact with the object it is meant to actually lift, it "bounces" back do to a lower position. It will then continually attempt to reach the commanded position, and continually get bounced back down before it can do so.

Is there a way to specify a stiffness for the joint, so that it only moves when commanded to move?

Simulating Actuated Joint Stiffness

Hello.

I am trying to simulate a joint which actuates a lift using Gazebo 7 and ROS Indigo. The URDF definition for the joint is as follows:

<joint name="lift_joint" type="prismatic">
  <origin xyz="0 0 0.177" rpy="1.5707963267949 0 0" />
  <parent link="chassis_link" />
  <child link="lift_link" />
  <axis xyz="0 1 0" />
  <limit lower="0" upper="0.08" effort="20000.0" velocity="0.02" />
  <dynamics damping="100.0" />
</joint>

The lift is driven by a position controller with these parameters:

<rosparam>
  gazebo_ros_control:
    pid_gains:
      left_wheel_joint: { p: 1.0, i: 0.0, d: 0.0 }
      right_wheel_joint: { p: 1.0, i: 0.0, d: 0.0 }
      lift_joint: { p: 100000.0, i: 1000.0, i_clamp: 1000, d: 1000.0 }
</rosparam>

The problem is that the lift can be easily depressed by another object. Say the lift is given a command to raise. It does so, but when it comes into contact with the object it is meant to actually lift, it "bounces" back do to a lower position. It will then continually attempt to reach the commanded position, and continually get bounced back down before it can do so.

Is there a way to specify a stiffness for the joint, so that it only moves when commanded to move?