CRISP is a collection of real-time, C++ controllers for compliant torque-based control for manipulators compatible with ros2_control, including Cartesian Impedance Control and Operational Space Control. Developed for deploying high-level learning-based policies (VLA, Diffusion, ...) and teleoperation on your manipulator. It is robot-agnostic and compatible with any manipulator offering and effort interface. Check the project website for guides, getting started, demos and more!
Note
To reduce maintenance overhead, all ROS 2 distributions are supported from a single main branch. The code uses compile-time macros to handle version-specific differences.
- 🐍 Python interface to move your ROS2 robot around without having to think about topics, spinning, and more ROS2 concepts but without loosing the powerful ROS2 API. Check crisp_py for more information and examples.
- 🔁 Gymnasium environment with utilities to deploy learning-based policies and record trajectories in LeRobotFormat. Check crisp_gym.
- ❓ Demos showcasing how to use the controller with FR3 of Franka Emika in single and bimanual setup. Check the crisp_controller_demos.
- ⚙️ Dynamically and highly parametrizable: powered by the
generate_parameter_libraryyou can modify stiffness and more during operation. - 🤖 Operational Space Controller as well as Cartesian Impedance Controller for torque-based control.
- 🚫 No MoveIt or complicated path-planning, just a simple C++
ros2_controller. Ready to use.
We use zensical to generate the website from markdown. You can modify it within docs/ in particular the index.md.
You can run the website locally with:
pixi run zensical serveThe website is automatically generated and deployed on GitHub pages with the CI. You can check the project website for guides, getting started, demos and more!
