Robotics StackExchange | Archived questions

Simultaneous Grasping

I'm trying to pick and place an object using dual panda arms at the same time. Following this tutorial, both arms can pick and place at different times (not at the same time).

For now, I'm just trying to make one of them pick through the planning group "two_panda_arms". I tried that by:

Here's the Terminal Output:

[ INFO] [1584575101.610706173]: Planning attempt 1 of at most 1
[ WARN] [1584575101.611125475]: Choice of end-effector for group 'two_panda_arms' is ambiguous. Assuming 'franka1_eef'
[ INFO] [1584575101.648778748]: Added plan for pipeline 'pick'. Queue is now of size 1
[ERROR] [1584575101.650257243]: IKConstraintSampler received dirty robot state, but valid transforms are required. Failing.
[ INFO] [1584575101.650371144]: Manipulation plan 0 failed at stage 'reachable & valid pose filter' on thread 1
[ WARN] [1584575101.654277209]: All supplied grasps failed. Retrying last grasp in verbose mode.
[ INFO] [1584575101.654576371]: Re-added last failed plan for pipeline 'pick'. Queue is now of size 1
[ERROR] [1584575101.655092332]: IKConstraintSampler received dirty robot state, but valid transforms are required. Failing.
[ INFO] [1584575101.655176528]: Sampler failed to produce a state
[ INFO] [1584575101.655221825]: Manipulation plan 0 failed at stage 'reachable & valid pose filter' on thread 3
[ INFO] [1584575101.655503633]: Pickup planning completed after 0.042996 seconds

I'm using Kinetic on Ubuntu 16.04.

I don't need synchronized motion, just grasping different objects at the same time.

I have achieved in moving both of them at the same time by defining a Target Pose and a Joint Goal.

Here's 2 issues, that are kind of similar to mine but didn't solve my issue. issue1 and issue2

Asked by NourhanKhatab on 2020-03-18 17:16:26 UTC

Comments

Answers

You can not plan for pose targets for multiple planning groups simultaneously .You first need to find a fitting joint configuration for each robot using IK and then set joint targets. I opened an Issue for a similar problem here.

bool rocket_found_ik = kinematic_state->setFromIK(rocket_joint_model_group, rocket_pose, timeout);
bool groot_found_ik = kinematic_state->setFromIK(groot_joint_model_group, groot_pose, timeout);

kinematic_state->copyJointGroupPositions(rocket_joint_model_group, rocket_joint_values);
kinematic_state->copyJointGroupPositions(groot_joint_model_group, 

// planning group with rocket and groot
rng_group_interface.setJointValueTarget(rocket_joint_names, 
rng_group_interface.setJointValueTarget(groot_joint_names, 

bool success = (rng_group_interface.plan(my_plan) == moveit::planning_interface::MoveItErrorCode::SUCCESS);

I create a demo project you can find here.

dual arm

Asked by bi3ri on 2022-03-11 10:15:27 UTC

Comments

any equivalent solution for python users?

Asked by matb on 2022-07-26 05:01:03 UTC