turtlebot/turtlebot_arm

Allow interchangable grippers

Opened this issue · 7 comments

The new parallel jaw gripper from TR needs a URDF and launch file.

@mikeferguson, do this issue make sense still?

In theory, yes. In practice, if nobody is using the new-style gripper, then probably not.

I am working on adding support for the PhantomX Pincher gripper. I've modified the config/launch files to support multiple models of gripper (added prefix "xyz_" to config files and modified launch files). I'm also working on modifying the Arbotix_ROS driver to add support for Parallel/Prismatic gripper - commands and Joint State need to be in meters rather than radians. Also closed out a few "TODO", such as checking for joint status in completion loops. It's all working but needs cleanup. I'll issue an Arbotix and Turtlebot_Arm PR once its ready. I only have the Pincher arm, so for original arm, I can only do a sort of visual sanity check - is it possible to buy the original gripper anywhere? I'm also working on load feedback from gripper, which is super cool but will probably keep separate for now. It works great as a standalone test app, but I haven't come up with a clean way to integrate into Arbotix_ROS

Hi @corb555, I can verify that your PR also works with the single-sided gripper (I suppose you mean the single-sided as the original one). Is the current trapezoidal gripper model not working or not enough for your needs? What else do you need?

Btw, before doing any implementation by yourself take a look at my fork where I have changes still not pull requested here, particularly for Gazebo support.

I'm definitely basing this on your fork as it has a lot of improvements over the main branch in addition to gazebo. The PhantomX is a Parallel gripper - one servo with the two fingers moving linearly in parallel. The existing parallel model almost works, but needed to be changed because when you set up a joint as linear/prismatic then MoveIt expects it to be in meters rather than radians for commands and joint status. I have this now working and tested with the Pick-and-place demo.
By single-sided, I did mean the original.

On a side note, did you get the block manipulator working? My main goal is to have object detection with Kinect driving Pick and Place.

-----Original Message-----
From: Jorge Santos Simón notifications@github.com
To: turtlebot/turtlebot_arm turtlebot_arm@noreply.github.com
Cc: corb555 corb@aol.com
Sent: Mon, Dec 8, 2014 1:06 pm
Subject: Re: [turtlebot_arm] Allow interchangable grippers (#7)

Hi @corb555, I can verify that your PR also works with the single-sided gripper (I suppose you mean the single-sided as the original one). Is the current trapezoidal gripper model not working or not enough for your needs? What else do you need?
Btw, before doing any implementation by yourself take a look at my fork where I have changes still not pull requested here, particularly for Gazebo support.

Reply to this email directly or view it on GitHub.

Ah! ok, I see. In the case of the one-sided gripper, arbotix controller interprets the command as distance (gripper opening) but then uses the fingers separation and length to calculate the servo turning: quite hackish but it works. However, I needed to "invent" appropriate values for center, pad_width and finger_length parameters to make it open (more or less) the commanded opening. So if you can come with a cleaner solution for the trapezoidal, we should also try to apply it to the one-sided gripper.

Block manipulator works quite well for me with both external and inboard cameras, but would be great to have your confirmation that it's not just working with my particular configuration but in general. But as it is now, you can have problems if moveit has a configured sensor, as he will interpret the blocks as ocupated volume. I added a new parameter to the block_detection_action_server to add the table as a collision object, but it's not documented in the wiki (as it's only in my fork, by now). E.g.

  <node name="block_detection_action_server" pkg="turtlebot_arm_block_manipulation" type="block_detection_action_server" output="screen">
    <rosparam param="table_pose">[0.09, 0.0, -0.035]</rosparam>
    <remap unless="$(arg external_camera)" from="/camera/depth_registered/points" to="/senz3d/depth/points"/>
  </node>

I've put my changes (forked from latest Arbotix devel and your latest Turtlebot) to here:

https://github.com/corb555/arbotix_ros
https://github.com/corb555/turtlebot_arm

Before you test this you should remove the bracket and finger from the gripper servo in case something goes horribly wrong. The README.md file should (hopefully) tell you how to run this.

I've tested this successfully with the PhantomX Pincher with:
pick_and_place.py
kinect_calibration (although I did notadjust gripper_tip config values)
Will next test with Block Manipulation.

Known issues:
- for visual model, I just used a F10 spacer as fingers rather than triangular finger
- trapezoidal gripper may be broken
- the phantomX has two fingers that slide, I handle as one fixed and the other moving twice as far. Opening width is correct but center will be slightly off
- this uses an environment variable to switch between arm types, not sure if that's the best way to go

If you could test with the original Turtlebot arm that would be great!

-----Original Message-----
From: Jorge Santos Simón notifications@github.com
To: turtlebot/turtlebot_arm turtlebot_arm@noreply.github.com
Cc: corb555 corb@aol.com
Sent: Mon, Dec 8, 2014 1:06 pm
Subject: Re: [turtlebot_arm] Allow interchangable grippers (#7)

Hi @corb555, I can verify that your PR also works with the single-sided gripper (I suppose you mean the single-sided as the original one). Is the current trapezoidal gripper model not working or not enough for your needs? What else do you need?
Btw, before doing any implementation by yourself take a look at my fork where I have changes still not pull requested here, particularly for Gazebo support.

Reply to this email directly or view it on GitHub.