# Moveit, cartesian planning dual arm

Hey guys,

I'm trying to drive through multiple waypoints and would like to use a cartesian planner for this. It is working when i plan for each arm individually cause i can plan for each endeffector but i have no clue how to set it up using a move group including both arms. For the IK solver it is explained in the tutorials (e.g. docs.ros.org/api/pr2_moveit_tutorials/html/planning/src/doc/move_group_interface_tutorial.html). But its not explained how to use a cartesian planner.

Cheers, Matthias

edit retag close merge delete

This qa discusses cartesian, not necessarily limiting to MoveIt! nor dual-arm though http://answers.ros.org/question/74776/cartesian-controller-for-ros/

( 2014-04-03 17:11:09 -0500 )edit

Sort by » oldest newest most voted

I faced the same problem.

I learn how to use a Cartesian planner thanks to moveit through python interface. I was able to move my arms one by one.

group_arm1.execute(plan)


Then I wanted to do simultaneous motion, so I started to look at the doc and figured out there is a function called AsyncExecute() in C++ but not for the Python interface. Some people help me to find a fix which is not implemented in indigo package yet. So i build from source with the fix, only to find out that this function is non blocking but that's all, you can't send several Trajectories at the same time.

This limitation is a bit weird because if you set your several arms as subgroup of a robot_group, then you can set a target for each end_effector, then go(). The mouvement is then simultaneous but not a Cartesian path.

group = moveit_commander.MoveGroupCommander("robot_group")
#set-pose_target() for each end effector
group.go()


A workaround with Cartesian planning can be to plan for each arm then try to fuse the trajectories (which are a list of joint angles, with time...). The problem is that it's not so easy to do because the trajectories can have different increment of positions and different time for execution.

This comment from http://answers.ros.org/question/74776... is the same idea

Much of ROS's internal design supports the idea of merging together successive trajectories using the "time_from_start" field in JointTrajectoryPoint. I'm not sure whether this is carried all the way through the robot drivers, though. You may need to do some "hacking" to get it working.

more