ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
4

How to configure the Gripper_action_controller correctly

asked 2016-02-25 10:04:39 -0500

haramoz gravatar image

Hello,

I have exposed my joint to the RobotHW by registering them with Hardware_interface::PositionJointInterface. Now to use the Gripper_action_controller I have created two controller.yaml one for the ros controller manager side and one for the moveit side.

The ros control manager side controller.yaml looks as follows:

gripper_controller: type: gripper_action_controller/GripperActionController joint: - joint_name

but when i try to spawn the controller it says "failed to load gripper_controller". I am not sure where is the mistake. I have tried configuring position_controllers/GripperActionController as "type" too. Results in same error. How ever If I configure position_controllers/JointTrajectoryController as the "type" then the controller is successfully spawned. is there issue in how i register the hardware interface?

Could you please guide me in this regard? This is my first post here, please excuse me for the mistakes. Thanks.

edit retag flag offensive close merge delete

Comments

Is JointTrajectoryController any different from GripperActionController?

cgnarendiran gravatar image cgnarendiran  ( 2017-10-26 16:15:15 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
2

answered 2016-02-26 09:24:47 -0500

haramoz gravatar image

updated 2016-02-26 09:26:04 -0500

Ah found the solution!!

First of all, right way to use gripper action controller is like this position_controllers/GripperActionController (for positionJointInterface). This can be found in the exported library of the gripper action controller. The example usage in the hardware_interface_adapter.h ( https://github.com/ros-controls/ros_c... ) file is rather misleading.

Secondly, the gripper command works with just one joint, I was trying to pass a joint array. that was the mistake.

gripper_controller: type: position_controllers/GripperActionController joint: joint_name

is working now. Even though I was sending one joint it was configured as an array. Which was wrong. Thank you.

edit flag offensive delete link more

Comments

hi, did the gripper_action_controller work for you with Moveit? I am having some problems now with the configuration files, and the gripper controller won't load properly...

rfn123 gravatar image rfn123  ( 2017-10-28 05:03:36 -0500 )edit

Did you get any further? @sibylcut and @cgnarendiran

philwall3 gravatar image philwall3  ( 2018-01-04 03:36:01 -0500 )edit

As answered, the GripperActionCOntroller is useful only for a one DOF gripper (only one movable finger). It is useless for parallel grippers where you want to actuate both the fingers. You can instead use JointTrajectoryController which does the job well for multiple fingers in the end-effector.

cgnarendiran gravatar image cgnarendiran  ( 2018-01-04 04:45:58 -0500 )edit

@philwall3 yes I made it work now, maybe what's also worth to mention is the Moveit config file (if you use Moveit) -- it should look about like this:

- name: gripper_controller
   action_ns: gripper_cmd
   type: GripperCommand
   joints: 
      - gripper_joint
rfn123 gravatar image rfn123  ( 2018-01-04 20:42:38 -0500 )edit

Yeah my Moveit config file looks like this. I managed to load the controller, but I can only move the gripper once. Which gripper are you using? Do you have your package available somewhere? I'd love to look at your launch file etc.

philwall3 gravatar image philwall3  ( 2018-01-05 03:57:31 -0500 )edit
1

@philwall3 I'm using a simple parallel gripper, and set one finger joint to mimic the other one. How did you move the gripper? I'll see if I can upload it, it's not publicly available in the moment.

rfn123 gravatar image rfn123  ( 2018-01-06 04:04:05 -0500 )edit

Thanks, that would be nice :) I have a robotiq 2-finger gripper and I moved it through Rviz with Moveit. Here is a bit more information: https://groups.google.com/forum/#!top...

philwall3 gravatar image philwall3  ( 2018-01-06 10:05:23 -0500 )edit

I'm trying to make a Gazebo simulation but each time the gripper tries to grasp an object, it slips away form fingers and the grasp is not properly computed. Searching for a solution, i have found that it is necessary to use an effort controller at least for the gripper, and in this way together with the Gazebo Jennifer's grasp plugin, the problem should be fixed. Anyway i've tried this solution and the objects still slip off my gripper. If anyone have some good hints I would appreciate them. Now I'm using position_controllers for the gripper because using effort_controllers/GripperActionController cause the presence of not specified p gain for PID even if these values are specified and the gripper seems not to respond to any input, resulting in the following warning:

aborted solution found but controller failed during execution

AndreSpa gravatar image AndreSpa  ( 2020-05-11 10:46:51 -0500 )edit

Question Tools

1 follower

Stats

Asked: 2016-02-25 10:04:39 -0500

Seen: 2,406 times

Last updated: Feb 26 '16