loco-3d / crocoddyl

Crocoddyl is an optimal control library for robot control under contact sequence. Its solver is based on various efficient Differential Dynamic Programming (DDP)-like algorithms
BSD 3-Clause "New" or "Revised" License
859 stars 174 forks source link

Introducing RvizDisplay #1216

Closed cmastalli closed 10 months ago

cmastalli commented 10 months ago

This PR introduces a third option for displaying Crocoddyl results in Rviz, i.e., RvizDisplay.

RvizDisplay uses our whole-body-state-rviz plugin to nicely display:

This Rviz plugin uses standardized ROS messages that we use in our MPC work. Those ROS messages are generic enough to be used in other robotics platforms. Indeed, this Rviz plugin can be used in our quadrotor and manipulator examples.

Additionally, we have rendered the ROS communication as efficient as possible. This is done by introducing crocoddyl_msgs. Crocoddyl messages include C++ implementation of ROS publishers and subscribers. These C++ implementations are bound in Python for convenience. We have headly tested in our MPC works as well.

Finally, these packages and our RvizDisplay support ROS 1 and ROS 2.

Below, I share a short clip demonstrating this display. You just need to do crocoddyl.RvizDisplay(...).

https://github.com/loco-3d/crocoddyl/assets/3601935/c8ecf486-73fe-4ca2-bd90-43beed4d3bfb