How to setup bipedal motion planning in moveit?

asked 2020-01-02 08:28:09 -0500

tech_support gravatar image

updated 2020-01-02 08:47:45 -0500

Planning Foot A

Planning Foot B

I have a bipedal mobile manipulator robot (See attached images). I am successful in programming movements for one foot. But I cannot figure out how to plan for foot B once foot A is set down.

Solutions I have tried: 1. I have tried spoofing the reverse kinematic chain and using one planning group for one end effector, and another planning group for the second end effector. This "works" but is not ideal as i have a duplicate of each joint and each link. (The second image I have uploaded shows this implementation) This solution was suggested in this answer: https://answers.ros.org/question/2091... 2. I have tried defining one planning group that goes base_link->intermediate_link->end_link and a second group with end_link->intermediate_link->base_link, but this does not seem to work because the base_link remains fixed in the world, and the urdf does not accept reparenting (if base_link is parent of intermediate_link, then i cant plan backwards.

There is also a solution suggested here: https://github.com/ros-planning/movei... however I cannot get updateStateWithLinkAt() to work.

Essentially what it comes down to is that I need to be able to change the parenting order of the joints, or dynamically redefine what the root joint is, but it seems like this is not possible using moveit, has anyone gotten something like this to work?

Using ROS Kinetic on Ubuntu 16.04

edit retag flag offensive close merge delete

Comments

I can't upload a picture because i dont have enough points

you do now, so please attach the image.

gvdhoorn gravatar image gvdhoorn  ( 2020-01-02 08:36:27 -0500 )edit

thanks just uploaded the images

tech_support gravatar image tech_support  ( 2020-01-02 08:48:03 -0500 )edit

Any solution here?

maliashahab gravatar image maliashahab  ( 2021-12-28 12:48:48 -0500 )edit

We have solved this by essentially having three robots. Two "virtual" or "facade" robots where one have an inverted tree, with and prefixes ab_ and ba_ on all joints and links -- and and a "main" robot (without prefixes) that the controller operates on. Planning is performed for the "prefixed" robots via Moveit, while the motion execution is performed on the non-prefix robot, by adding and removing prefixes to some joint_state topics and actionlib topics. We might present the solution in more detail at ROSCon 2022, otherwise I will try to open-source the code. There is some RViz trickery involved when changing "direction" of the robot, otherwise everything is working quite smoothly now.

FSund gravatar image FSund  ( 2022-06-07 06:25:47 -0500 )edit