Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding support for PhantomX Pincher gripper #1

Merged
merged 7 commits into from
Jan 14, 2015

Conversation

corb555
Copy link

@corb555 corb555 commented Dec 15, 2014

Pulled gripper section of arm.urdf.xacro out into a new file, gripper.urdf.xacro
Renamed existing config files to add prefix, "turtlebot_"
Added similar versions of the config files for the Pincher gripper with prefix, "pincher_".
Hopefully this paradigm should make it easy to add other grippers or arm configurations.
I've tested with Indigo and Pincher arm - all demo items seem to work fine.
For Pincher, this requires new version of Arbotix_ROS to support prismatic joint, which I'm sending to Fergs.
Needs testing with original turtlebot arm.

- Adding prefix for arm type to config files
- Adding $(optenv TURTLEBOT_ARM1 turtlebot) to launch files
- Moving gripper config items from arm config to separate file
- Adding config files for PhantomX Pincher
@corot
Copy link
Owner

corot commented Dec 16, 2014

Looks good, but I have a couple of remarks:

I would like to avoid duplicating all the files for both arms. Should not we try to keep just one (configurable) arm and just add xacro files or whatever else for the grippers? I learned recently that there's an if/unless mechanism on xacro similar to the on on launch files.

Another hint, I would prefer to pass an argument with the arm model to the launch files, and use the env. variable as the default, as in turtlebot_bringup (e.g.)

  <arg name="base" default="$(env TURTLEBOT_BASE)"/>  <!-- create, roomba -->

Btw, any reason to call the env. var TURTLEBOT_ARM1 instead of TURTLEBOT_ARM or TURTLEBOT_ARM_MODEL?

@corb555
Copy link
Author

corb555 commented Dec 16, 2014

I'll change this to just having gripper file separate and use env var rather than arg. The reason for ARM1 is if you have multiple arms (I will have a parallel gripper and a suction gripper).

On Dec 16, 2014, at 9:31 AM, Jorge Santos Simón [email protected] wrote:

Looks good, but I have a couple of remarks:

I would like to avoid duplicating all the files for both arms. Should not we try to keep just one (configurable) arm and just add xacro files or whatever else for the grippers? I learned recently that there's an if/unless mechanism on xacro similar to the on on launch files.

Another hint, I would prefer to pass an argument with the arm model to the launch files, and use the env. variable as the default, as in turtlebot_bringup (e.g.)


Btw, any reason to call the env. var TURTLEBOT_ARM1 instead of TURTLEBOT_ARM or TURTLEBOT_ARM_MODEL?


Reply to this email directly or view it on GitHub.

@corot
Copy link
Owner

corot commented Dec 16, 2014

Cool! Unless it turns to be too painful, I think both arms are similar enough to use the same files for both. Btw, what are the differences? I can see that the mounting plate and the joint between the first to arms are different. There're more differences?

👍 for TURTLEBOT_ARM1

	- removed need for separate pincher_arm.xacro file
        - note: the combined file has new joint limits that <should> work for either
        - some modifications to YAML files based on update to ArbotixROS
@corb555
Copy link
Author

corb555 commented Dec 18, 2014

Updated to use a single Arm file rather than a separate arm file for Pincher. I believe the only difference with the Pincher are: 1) different base (Pincher base is 55 mm from table to bottom of Pan servo, not sure what original was) 2) I needed to change the Pan servo YAML file to rotate it 90 deg, 3) I updated the joint limit values in turtlebot_arm.xacro to match the Pincher - they should also be the same for turtlebot but needs verification. Note: you will need the Arbotix changes I posted Dec 17 for this. The launchfile change is still to come. And a side note: block manipulation works! My calibration is about 20mm off now but once I fix that it will be awesome.

@corot
Copy link
Owner

corot commented Dec 18, 2014

Again a couple of questions:

  • why have you emptied the turtlebot_arm_moveit_controller_manager.launch.xml launchfile?
  • for the joints limits, why have you removed the ${pan_llimit} and ${pan_ulimit} arguments? They are useful in case you mount the first servo shaft rotated, as recommends the turtlebot arm building tutorial
  • And the rest of the joints limits, you have replaced the original values... but we should find a way to make them configurable, maybe using the xacro:if/xacro:unless to define different properties for both arms

For block manipulation: do you use an external camera? it's a kinect?

@corb555
Copy link
Author

corb555 commented Dec 19, 2014

  1. moveit_controller_manager should not have been modified at all. Will check.
  2. I had put in separate joint limits described below, but would the MoveIt planners handle those cases properly as collisions, thus I can go back to the general pan_llimit? I'll revert back to the original.
  3. I assume the following is not needed, but these were the original justification: For joint limits on the PhantomX: the Shoulder Lift, elbow and wrist each have unique limits. For the Pincher, the shoulder joint can hit the Pan servo, so limited there. The Elbow has full mobility. The wrist joint is limited because the Gripper servo is 90 degree offset from the bracket and can collide. (This could be handled with a xacro/if as you note, or just leave MoveIt to avoid the collision)
  4. For Block Manipulation I have an external Kinect and used the Kinect Calibration which got it very close. I havent changed the default gripper_tip_x y and z values in Calibrate, so that may be all I need.

@corot
Copy link
Owner

corot commented Dec 19, 2014

  1. You mean, let the empty configuration generated by the moveit wizard? Not sure at all... Can be a pain to figure out why the arm is not working for someone not familiar with moveit files, isn't it? Well, we can adhere to the common practice in the community, whatever it is.
  2. Joint limits: maybe the easy solution is to provide arguments for all limits: pan_llimit, pan_ulimit, shoulder_limit, elbow_limit and wrist_limit. Is a bit verbose, but I think you cannot use xacro:if to define properties (cannot mix xacro macros together). But it seems that we need different values for both arms.
  3. But you have different values for all joints! 2.62, 2.16, 2.38, 1.72. And all are different to the original values I had for the turtlebot arm.
  4. Make sense. However, it didn't work perfect for me neither. I wonder if it's related with the changes on the kinect tf tree since the block manip demo was written...

  -  Adding section in turtlebot_arm.urdf.xacro for joint limits
  -  Renaming finger mesh files to be model specific
@corb555
Copy link
Author

corb555 commented Dec 20, 2014

  1. turtlebot_arm_moveit_controller_manager.launch restored to original
  2. I moved all the joint limits to section in turtlebot_arm.urdf.xacro, which seems a fairly clean way to handle this.
  3. I started adding support for arm_type as argument. Everything works except it gets the SRDF file using the env param and ignores argument. Can't figure out why.

Note: I'm going to post one more update to this to clean up how pick_and_place gets the parameter for gripper open. Should post by 22 Dec.

@corot
Copy link
Owner

corot commented Dec 22, 2014

Sounds good. Anyway, I'm on holidays right now and cannot test your changes, but I can blindly merge your PR if you need it and test all once back. Otherwise, I'll merge and test all on 6 or 7 Jan.

@corb555
Copy link
Author

corb555 commented Dec 22, 2014

The merge can wait. Happy holidays.

On Dec 22, 2014, at 7:54 AM, Jorge Santos Simón [email protected] wrote:

Sounds good. Anyway, I'm on holidays right now and cannot test your changes, but I can blindly merge your PR if you need it and test all once back. Otherwise, I'll merge and test all on 6 or 7 Jan.


Reply to this email directly or view it on GitHub.

corot added a commit that referenced this pull request Jan 14, 2015
Adding support for PhantomX Pincher gripper
@corot corot merged commit 0db6141 into corot:indigo-devel Jan 14, 2015
@corot
Copy link
Owner

corot commented Jan 14, 2015

All looks good with the old gripper! Good job. Sorry for taking so long 🙈

Marginally related: which software are you using for object recognition, if any? I feel lazy to use Object Recognition Kitchen (ORK), as is quite cumbersome and I just want to recognize some simple objects, as for the blocks manipulation demo.

@corb555
Copy link
Author

corb555 commented Jan 14, 2015

awesome! thanks for merging this!

-----Original Message-----
From: Jorge Santos Simón [email protected]
To: corot/turtlebot_arm [email protected]
Cc: corb555 [email protected]
Sent: Wed, Jan 14, 2015 4:19 pm
Subject: Re: [turtlebot_arm] Adding support for PhantomX Pincher gripper (#1)

All looks good with the old gripper! Good job. Sorry for taking so long

Reply to this email directly or view it on GitHub.

@corot
Copy link
Owner

corot commented Jan 15, 2015

Welcome.

Btw, I didn't used your PR on arbotix repo... do it affect somehow the standard gripper?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants