The crisp_contact_decomposition repository extends the CRISP ROS2 controllers to a task-space hybrid control formulation that decomposes SE(3) into independant pose-controlled and wrench-controlled subspaces, allowing for simultaneous position and force control in real time. This controller is compatible with ROS2, and is experimentally verified on hardware via the Franka Research 3 manipulator arm.
All work supported by the Hybrid Intelligent Experimental Robotics Lab at North Carolina State University. Visit the HIER Lab website.
- An exposed
selection_vectorinterface and correspondingly modifiedcrisp_pypublisher for control over task-force decomposition - Slight performance enhancements to the original
cartesian_controller
This demonstration is a direct application of the CRISP OSC controller and a good starting point for verifying everything works correctly.
After installing the docker container:
-
Ensure FCI is enabled We recommend running the
communication_testbefore running the example for the first time.communication_test <robot-ip>
-
Start the controllers In a seperate terminal, start the CRISP cartesian controller and franka gripper node
cd /ros2_ws/ && source install/setup.bash export ROBOT_IP=<your robot ip address> ros2 launch contact_decomp_demos franka.launch.py robot_ip:=$ROBOT_IP & ros2 launch franka_gripper gripper.launch.py robot_ip:=$ROBOT_IP
In the future, these will likely be launched from the same file. The gripper launch configuration will depend on the specific gripper connected to the arm.
-
Run the operational space control demo In the original terminal (with .venv activated), run the demo.
cd /ros2_ws/src/contact_decomp_demos/examples/ python3 01_figure_eight_osc.py
If you encounter libfranka issues, it is recommended to set up this package in isolation to verify it works independantly of this project. Please refer to the libfranka installation instructions
A real-time kernel is essential to ensure proper communication and to prevent timeout issues. For guidance on setting up a real-time kernel, please refer to the Franka installation documentation.
Contributions are welcome! Please fork this repository and create a pull request with your changes.
All packages of crisp_contact_decomposition are licensed under the Apache 2.0 license.
For questions or support, please open an issue on the GitHub Issues page.
Or, contact me at dmalexa5@ncsu.edu.

