grasp
precision-grasp

A module that, given a 3D point cloud representing an object, finds the best triplet to perform a three-finger precision grasp successfully. More...

A module that, given a 3D point cloud representing an object, finds the best triplet to perform a three-finger precision grasp successfully.

For further information:

I.Gori, U. Pattacini, V. Tikhanoff, G. Metta Three-Finger Precision Grasp on Incomplete 3D Point Clouds. In Proceedings of IEEE International Conference on Robotics and Automation (ICRA), 2014.

Description

This module, given a set of 3D points, returns the best triplet of 3D points on the basis of stability and feasibility properties. The search over the point cloud is executed by means of a discrete particle swarm optimization algorithm. The triplet is then evaluated by the handIKModule, which returns a feasible configuration of the hand in terms of joint positions, as well as the position and the orientation of the end-effector. This information can successively be fed to a module that actually executes the grasp. These information are also sent to some matlab scripts that are inside the app/matlab folder. This module usually takes the 3D point cloud from the object-reconstruction module.

Commands:

The commands sent as bottles to the module port /<modName>/rpc are described in the following:

HELP
format: [help]
action: a list of all the possible commands to send to the rpc port is printed.

SET_VISUALIZATION
format: [set visualization param]
action: if param is set to on, a 3D viewer containing the reconstructed point cloud along with the chosen end-effector position and orientation is depicted. Otherwise this functionality is disabled.

SET_WINDOW
format: [set param1 param2]
action: param1 can be x, y, w or h, and it refers respectively to the x position, the y position, the width and the height of the 3D viewer. param2 has to be set to the value that is wanted to assign.

SET_OFFSET
format: [set param1 x y z]
action: param1 can be offsetL, for the left arm, or offsetR, for the right arm. It sets an offset on the corresponding arm (represented by x, y and z), in case there is some error in the mapping between the eye and the arm.

SET_FILTER
format: [set filter param]
action: param can be set to on or off. It is usually set to on, as the stereo vision library provides noisy point clouds. A statistical outlier removal filter is usually needed to obtain clearer point clouds.

SET_WRITE
format: [set write param]
action: param can be set to on or off. If it is set to on, the current point cloud is saved in the path specified in the config file.

BLOCK
format: [block param]
action: param can be set to right or left. It is useful if it is wanted to force the iCub to use a specific arm. The arm can be unblocked using the command UNBLOCK.

UNBLOCK
format: [unblock param]
action: param can be set to right or left. It serves to unblock an arm that was previously blocked using the command BLOCK.

GRASP
format: [grasp (x y)] "wait"
action: the algorithm runs to find a good triplet and a good configuration, then sends such configuration to the actionsRenderingEngine module, which executes the grasp. If the optional parameter wait is present, the grasp is computed and sent to matlab, but it is not executed. If then the user wants to execute the grasp, he has to use the command GO. Otherwise, to reset the computation, he can use the command DONT.

GO
format: [go]
action: if the computation of the grasp was successful but the grasp has not been executed yet because the wait command has been added to GRASP, go makes the robot execute the grasp.

DONT
format: [dont]
action: it resets all the information that has been previously computed. It is usually used when a grasp (x y) wait command has been sent, and the computed grasp is not satisfactory.

ISGRASPED
format: [isGrasped]
action: returns ACK if the grasp has been successfully executed by ARE, otherwise returns NACK.

Libraries

Ports Created

Parameters

The following are the options that are usually contained in the configuration file:

–name name

–robot robot

– radiusSearch radiusSearch

– path path

– fromFile fromFile

– x x

– y y

– w w

– h h

– outputFile outputFile

– limit_finger_max limit_finger_max

– limit_finger_min limit_finger_min

– sampling sampling

– alpha alpha

– phi_p phi_p

– phi_g phi_g

– iterations iterations

– hand_area hand_area

Tested OS

Windows, Linux

Author
Ilaria Gori