0
$\begingroup$

I'm trying to simulate a simple scenario of pick and place for my UR5 ARM robot but i'm encoutering some problems during grasp. In particular, when grasping the gripper starts shaking untill the object slips out of the gripper the gripper seems to explode as can be seen in Video I am using effort_controllers. please help me to solve the issue

MY GAZEBO PLUGINS:

<gazebo>
        <!-- loading plugin: mimic joints works in gazebo now -->
         <plugin name="gazebo_mimic_joint_plugin_1" filename="libroboticsgroup_gazebo_mimic_joint_plugin.so">
                    <joint>gripper_finger1_joint</joint>
                    <mimicJoint>gripper_finger2_joint</mimicJoint>
                    <multiplier>1.0</multiplier>
                    <offset>0.0</offset>
                    <sensitiveness>0.0</sensitiveness>
                    <maxEffort>500</maxEffort>
                    <robotNamespace>/ur5</robotNamespace>
 </plugin>
        <plugin name="gazebo_mimic_joint_plugin_2" filename="libroboticsgroup_gazebo_mimic_joint_plugin.so">
                    <joint>gripper_finger1_joint</joint>
                    <mimicJoint>gripper_finger2_inner_knuckle_joint</mimicJoint>
                    <multiplier>1.0</multiplier>
                    <offset>0.0</offset>
                    <sensitiveness>0.0</sensitiveness>
                    <maxEffort>500</maxEffort>
                    <robotNamespace>/ur5</robotNamespace>
 </plugin>
 <plugin name="gazebo_mimic_joint_plugin_3" filename="libroboticsgroup_gazebo_mimic_joint_plugin.so">
                    <joint>gripper_finger1_joint</joint>
                    <mimicJoint>gripper_finger1_inner_knuckle_joint</mimicJoint>
                    <multiplier>1.0</multiplier>
                    <offset>0.0</offset>
                    <sensitiveness>0.0</sensitiveness>
                    <maxEffort>500</maxEffort>
                    <robotNamespace>/ur5</robotNamespace>
 </plugin>
 <plugin name="gazebo_mimic_joint_plugin_4" filename="libroboticsgroup_gazebo_mimic_joint_plugin.so">
                    <joint>gripper_finger1_joint</joint>
                    <mimicJoint>gripper_finger1_finger_tip_joint</mimicJoint>
                    <multiplier>-1.0</multiplier>
                    <offset>0.0</offset>
                    <sensitiveness>0.0</sensitiveness>
                    <maxEffort>500</maxEffort>
                    <robotNamespace>/ur5</robotNamespace>
 </plugin>
 <plugin name="gazebo_mimic_joint_plugin_5" filename="libroboticsgroup_gazebo_mimic_joint_plugin.so">
                    <joint>gripper_finger1_joint</joint>
                    <mimicJoint>gripper_finger2_finger_tip_joint</mimicJoint>
                    <multiplier>-1.0</multiplier>
                    <offset>0.0</offset>
                    <sensitiveness>0.0</sensitiveness>
                    <maxEffort>800</maxEffort>
                    <robotNamespace>/ur5</robotNamespace>
        </plugin>
    </gazebo>
    <!--using the grasp plugin so that the gripper can grasp things in simulation-->
    <gazebo>
        <plugin name="gazebo_grasp_fix" filename="libgazebo_grasp_fix.so">
            <arm>
                <arm_name>ur5</arm_name>
                <palm_link>wrist_3_link</palm_link>
                <gripper_link>gripper_finger1_finger_tip_link</gripper_link>
                <gripper_link>gripper_finger2_finger_tip_link</gripper_link>
                <gripper_link>gripper_finger1_inner_knuckle_link</gripper_link>
                <gripper_link>gripper_finger2_inner_knuckle_link</gripper_link>
                <gripper_link>gripper_finger1_knuckle_link</gripper_link>
                <gripper_link>gripper_finger2_knuckle_link</gripper_link>
            </arm>
            <forces_angle_tolerance>100</forces_angle_tolerance>
            <update_rate>10</update_rate>
            <grip_count_threshold>4</grip_count_threshold>
            <max_grip_count>8</max_grip_count>
            <release_tolerance>0.005</release_tolerance>
            <disable_collisions_on_attach>false</disable_collisions_on_attach>
            <contact_topic>__default_topic__</contact_topic>
        </plugin>
    </gazebo>

RED BOX IN WORLD FILE :

 <model name='unit_box_red'>
      <link name='link'>
        <inertial>
          <mass>1</mass>
          <inertia>
            <ixx>0.166667</ixx>
            <ixy>0</ixy>
            <ixz>0</ixz>
            <iyy>0.166667</iyy>
            <iyz>0</iyz>
            <izz>0.166667</izz>
          </inertia>
          <pose>0 0 0 0 -0 0</pose>
        </inertial>
        <self_collide>0</self_collide>
        <enable_wind>0</enable_wind>
        <kinematic>0</kinematic>
        <pose>0 0 0 0 -0 0</pose>
        <gravity>1</gravity>
        <visual name='visual'>
          <geometry>
            <box>
              <size>0.06393 0.060568 0.060433</size>
            </box>
          </geometry>
          <material>
            <script>
              <name>Gazebo/Grey</name>
              <uri>file://media/materials/scripts/gazebo.material</uri>
            </script>
            <shader type='pixel'>
              <normal_map>__default__</normal_map>
            </shader>
            <ambient>1 0 0 0</ambient>
            <diffuse>0.7 0.7 0.7 1</diffuse>
            <specular>0.01 0.01 0.01 1</specular>
            <emissive>0 0 0 1</emissive>
          </material>
          <pose>0 0 0 0 -0 0</pose>
          <transparency>0</transparency>
          <cast_shadows>1</cast_shadows>
        </visual>
        <collision name='collision'>
          <laser_retro>0</laser_retro>
          <max_contacts>10</max_contacts>
          <pose>0 0 0 0 -0 0</pose>
          <geometry>
            <box>
              <size>0.06393 0.060568 0.060433</size>
            </box>
          </geometry>
          <surface>
            <friction>
              <ode>
                <mu>0.1</mu>
                <mu2>0.1</mu2>
                <fdir1>0 0 0</fdir1>
                <slip1>0</slip1>
                <slip2>0</slip2>
              </ode>
              <torsional>
                <coefficient>1</coefficient>
                <patch_radius>0</patch_radius>
                <surface_radius>0</surface_radius>
                <use_patch_radius>1</use_patch_radius>
                <ode>
                  <slip>0</slip>
                </ode>
              </torsional>
            </friction>
            <bounce>
              <restitution_coefficient>0</restitution_coefficient>
              <threshold>1e+06</threshold>
            </bounce>
            <contact>
              <collide_without_contact>0</collide_without_contact>
              <collide_without_contact_bitmask>1</collide_without_contact_bitmask>
              <collide_bitmask>1</collide_bitmask>
              <ode>
                <soft_cfm>0</soft_cfm>
                <soft_erp>0.2</soft_erp>
                <kp>1e+13</kp>
                <kd>1</kd>
                <max_vel>0.01</max_vel>
                <min_depth>0</min_depth>
              </ode>
              <bullet>
                <split_impulse>1</split_impulse>
                <split_impulse_penetration_threshold>-0.01</split_impulse_penetration_threshold>
                <soft_cfm>0</soft_cfm>
                <soft_erp>0.2</soft_erp>
                <kp>1e+13</kp>
                <kd>1</kd>
              </bullet>
            </contact>
          </surface>
        </collision>
      </link>
      <static>0</static>
      <allow_auto_disable>1</allow_auto_disable>
      <pose>-0.553128 -0.37896 0 0 -0 0</pose>
    </model>
$\endgroup$

1 Answer 1

1
$\begingroup$

I don't have ultimate solution for this problem. But, I guess the slipping issue is due to unstable contact physics. And, one of the reasons could be large simulation step. This parameter can be changed in Gazebo GUI. It is in the world tab => physics => max step size. I have set the max step size to be 0.000500 and the chance of slipping is decreased at the expense of higher computation cost.

Some users may suggest changing the physics properties of objects. But, sometimes changing too much may just turn the whole simulation into an unrealistic one.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.