CRISP -- Compliant ROS2 Controllers for Learning-Based Manipulation Policies and Teleoperation
Daniel San José Pro, Oliver Hausdörfer, Ralf Römer, Maximilian Dösch, Martin Schuck, Angela P. Schoellig
TL;DR
CRISP tackles the challenge of executing learning-based manipulation policies that output low-frequency or discontinuous targets by delivering a robot-agnostic, real-time torque-control framework for ROS2. It combines Cartesian impedance and operational-space control with null-space projection, joint barriers, gravity/coriolis and friction compensation, and target-wrench capabilities into a modular stack that can be toggled per task. The system integrates with ROS2 control and Pinocchio, and provides Python and Gymnasium interfaces (CRISP_PY, CRISP_GYM) to streamline data collection and policy deployment across hardware and simulation. Evaluated on hardware (Franka FR3) and in simulation (Kuka IIWA14, Kinova Gen3), CRISP demonstrates accurate tracking, effective teleoperation, and seamless policy execution at real-time frequencies, offering a practical pathway to rapid experimentation with learning-based manipulation. The approach lowers integration barriers and broadens the applicability of learning-based methods to a range of ROS2-compatible manipulators, enabling faster iteration and deployment of perception-free, action-chunk-based policies.
Abstract
Learning-based controllers, such as diffusion policies and vision-language action models, often generate low-frequency or discontinuous robot state changes. Achieving smooth reference tracking requires a low-level controller that converts high-level targets commands into joint torques, enabling compliant behavior during contact interactions. We present CRISP, a lightweight C++ implementation of compliant Cartesian and joint-space controllers for the ROS2 control standard, designed for seamless integration with high-level learning-based policies as well as teleoperation. The controllers are compatible with any manipulator that exposes a joint-torque interface. Through our Python and Gymnasium interfaces, CRISP provides a unified pipeline for recording data from hardware and simulation and deploying high-level learning-based policies seamlessly, facilitating rapid experimentation. The system has been validated on hardware with the Franka Robotics FR3 and in simulation with the Kuka IIWA14 and Kinova Gen3. Designed for rapid integration, flexible deployment, and real-time performance, our implementation provides a unified pipeline for data collection and policy execution, lowering the barrier to applying learning-based methods on ROS2-compatible manipulators. Detailed documentation is available at the project website - https://utiasDSL.github.io/crisp_controllers.
