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")
group.set_pose_target(pose_target1, "N1_ee_link")
#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/cartesian-controller-for-ros/ 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.
Originally posted by Arowana with karma: 381 on 2015-05-21
This answer was ACCEPTED on the original site
Post score: 2