Hello,
I'm currently looking into making planning more robust for a floating base platform such as a humanoid, where the robot planning frame might move with regards to the world frame during plan execution due to disturbances and/or balance control. Other examples where this could be useful are a quadrotor with a manipulator or a robot trying to follow a moving object with the endeffector.
One idea I wanted to experiment with is performing continuous replanning for reaching a cartesian goal frame with the endeffector. This is is somewhat different from the current replanning approach in moveit that checks for validity of the remaining trajectory and replans to a planning goal that is not modified. Instead, in my scenario, I'd need to modify the planning goal (by calling IK based on current world state) and then replan.
The other thing I'd like to have is continuous execution that updates the executed trajectory as soon as a new plan has been computed. While not completely trivial to make this smooth in all situations, the joint_trajectory_controller supports updating (future) parts of trajectories in principle and with proper timestamping and interpolation, it should be possible to get smooth motion while continuously replanning in the background. After looking at the code, it looks like this cannot be done with the TrajectoryExecutionManager currently however, as it does not support updating trajectories (instead it can either be stopped before finishing execution of a trajectory, or it will call a callback when it finished executing).
The pipeline from planning to arrival of trajectories at joint_trajectory_controllers is pretty complex, so I'm currently pondering hacking a shortcut vs. properly integrating with the existing execution pipeline. Any discussion, suggestions or hints are appreciated.
regards,
Stefan