Home | Tutorials | Wiki | Issues
Ask Your Question
0

Object rotates while grabbed by the gripper, tryint to lift it results in slip out.

asked 2016-12-19 12:54:53 -0500

mape1082 gravatar image

updated 2016-12-21 11:59:19 -0500

Dear all,

I am trying to have my robot arm be able to pick up an object, manually (by teleop) and dropping it. So far my efforts are unsuccessful.

Video

What settings I have to set the gripper to so that I can grab the can and lift it? I used the gazebo Gripper tag with no results. Ultimately I want to be able to pick up an apple from a try and drop it in a basket.

Here a pic of my robot: inertias and collisions

Any guidance is appreciated.

Edit: Code showing the definition of the finger and the corresponding joint:

 <link name="arm_gripper_finger_right_link">
<visual name="arm_gripper_finger_right">
  <origin rpy="0 0 0" xyz="-0.050841 0 0"/>
  <geometry>
    <box size="0.101682 0.02 0.02"/>
  </geometry>
  <material name="military"/>
</visual>
<!--      <visual>
    <origin xyz="${mox} ${moy} ${moz}" rpy="${ (rotate - 1)*PI/2} 0 ${rotate * 0.45}"/>
    <geometry>
      <mesh filename="${f}" scale="0.1 0.1 0.1"/>
    </geometry>
    <material name="military"/>
  </visual>-->
<collision>
  <origin rpy="0 0 0" xyz="-0.050841 0 0"/>
  <geometry>
    <box size="0.101682 0.02 0.02"/>
  </geometry>
  <surface>
    <friction>
      <ode>
        <mu>500</mu>
        <mu2>500</mu2>
        <fdir1>0 0 0</fdir1>
        <slip1>0</slip1>
        <slip2>0</slip2>
      </ode>
      <torsional>
        <ode/>
      </torsional>
    </friction>
    <bounce>
      <restitution_coefficient>0</restitution_coefficient>
      <threshold>100000</threshold>
    </bounce>
    <contact>
      <ode>
        <soft_cfm>0</soft_cfm>
        <soft_erp>0.2</soft_erp>
        <kp>1e+07</kp>
        <kd>1</kd>
        <max_vel>0</max_vel>
        <min_depth>0.001</min_depth>
      </ode>
    </contact>
  </surface>
</collision>
<inertial>
  <mass value="0.15"/>
  <inertia ixx="1e-05" ixy="0" ixz="0" iyy="0.00013424036405" iyz="0" izz="0.00013424036405"/>
  <!--Yields:
    <mass value="0.15"/>
    <inertia ixx="0.00029625" ixy="0" ixz="0" iyy="0.00029625" iyz="0" izz="3e-05"/> -->
  <!--Trying with values computed by Meshlab instead.-->
  <!--<inertia ixx="0.001874" ixy="0.001712" ixz="0" iyx="0.001712" iyy="0.005248" iyz="0" izz="0.005823"/>-->
</inertial>

</link> <joint name="arm_gripper_finger_right_joint" type="revolute"> <origin rpy="0 0 0.448798950513" xyz="-0.025 0.055 0"/> <parent link="arm_gripper_link"/> <child link="arm_gripper_finger_right_link"/> <axis xyz="0 0 1"/> <limit effort="0" lower="-0.74" upper="0.02" velocity="0.5"/> <dynamics damping="0.0" friction="0.0"/> </joint>

Edit: Controllers in use:

# Position Controllers ---------------------------------------
  arm_elbow_position_controller:
    type: position_controllers/JointPositionController
    joint: arm_elbow_joint
    pid: {p: 100.0, i: 0.01, d: 10.0}
  arm_forearm_position_controller:
    type: position_controllers/JointPositionController
    joint: arm_forearm_joint
    pid: {p: 100.0, i: 0.01, d: 10.0}
  arm_wrist_position_controller:
    type: position_controllers/JointPositionController
    joint: arm_wrist_joint
    pid: {p: 100.0, i: 0.01, d: 10.0}
  arm_gripper_left_position_controller:
    type: position_controllers/JointPositionController
    joint: arm_gripper_finger_left_joint
    pid: {p: 100.0, i: 0.01, d: 10.0}
  arm_gripper_right_position_controller:
    type: position_controllers/JointPositionController
    joint: arm_gripper_finger_right_joint
    pid: {p: 100.0, i: 0.01, d: 10.0}

Thanks!

edit retag flag offensive close merge delete

Comments

what kind of controllers are you using?

hsu gravatar imagehsu ( 2016-12-21 11:41:47 -0500 )edit

Hi hsu, I am using position controllers. (updated the description above). Do you think this may interfere? Thanks

mape1082 gravatar imagemape1082 ( 2016-12-21 11:54:56 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted
0

answered 2017-02-10 14:43:51 -0500

mape1082 gravatar image

It finally worked by increasing the inertia around 10 times the real one, and using the gazebo tags with references to the proper links.

edit flag offensive delete link more
0

answered 2016-12-20 11:00:00 -0500

updated 2016-12-20 11:01:27 -0500

Wow, when you said the object rotates I didn't imagine it would be like it is on the video.

If you turn on your contact visualization, you'll probably see the contacts flickering on and off between the can and the gripper. There are several parameters on <collision><surface><contact> which can be tuned to improve the contact. Unfortunately it's not straight forward and we don't have a nice guide for it yet. I'd start playing with kp, kd, max_vel and min_depth. Of course, friction should also help.

Finally, contact is greatly improved when you use simple shapes (box, cylinder, sphere) as collisions instead of a trimesh. You could approximate your gripper's shape with boxes.

edit flag offensive delete link more

Comments

Thanks for your reply! Following your suggestion I used simple shape for the collision. Also defined most of the parameter you mentioned. However so far the behavior is similar. I stopped trying to grab the can ans switched to grab a rectangular bar, with same results. Any ideas? Thanks a lot.

mape1082 gravatar imagemape1082 ( 2016-12-21 11:38:28 -0500 )edit
Login/Signup to Answer

Question Tools

1 follower

Stats

Asked: 2016-12-19 12:53:46 -0500

Seen: 114 times

Last updated: Feb 10