Skip to content

utiasDSL/crisp_controllers

Repository files navigation

CRISP Controllers Logo

Static Badge Static Badge

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.

Features

  • 🐍 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_library you 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.

For Contributors

Updating the website

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 serve

The 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!