diff --git a/.github/workflows/kilted_ros2_ci.yml b/.github/workflows/kilted_ros2_ci.yml new file mode 100644 index 0000000..6baf44c --- /dev/null +++ b/.github/workflows/kilted_ros2_ci.yml @@ -0,0 +1,29 @@ +# This config uses industrial_ci (https://github.com/ros-industrial/industrial_ci.git). +# For troubleshooting, see README (https://github.com/ros-industrial/industrial_ci/blob/master/README.rst) +name: ROS2 kilted - CI + +on: [push, pull_request] + +jobs: + industrial_ci: + name: ROS ${{ matrix.ROS_DISTRO }} (${{ matrix.ROS_REPO }}) + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + ROS_DISTRO: [kilted] + ROS_REPO: [main] + env: + CCACHE_DIR: "${{ github.workspace }}/.ccache" # directory for ccache (and how we enable ccache in industrial_ci) + steps: + - uses: actions/checkout@v4 # clone target repository + - uses: actions/cache@v4 # fetch/store the directory used by ccache before/after the ci run + with: + path: ${{ env.CCACHE_DIR }} + key: ccache-${{ matrix.ROS_DISTRO }}-${{ matrix.ROS_REPO }}-${{github.run_id}} + restore-keys: | + ccache-${{ matrix.ROS_DISTRO }}-${{ matrix.ROS_REPO }}- + - uses: 'ros-industrial/industrial_ci@master' + env: + ROS_DISTRO: ${{ matrix.ROS_DISTRO }} + ROS_REPO: ${{ matrix.ROS_REPO }} diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..2c07333 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.11 diff --git a/README.md b/README.md index 4ec2097..dee3b43 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,20 @@ -# CRISP - `ros2_control` cartesian torque-based controllers - -CRISP Controllers Logo +CRISP Controllers Logo + Static Badge -Collection of C++ controllers for torque-based control for manipulators compatible with `ros2_control`, including Operational Space Control and Cartesian Impedance Control. The controllers are developed with intend to be used with learning-based policies (VLA, Diffusion Policies, ...). The controllers are robot agnostic and tested on the Franka Robotics FR3 Robot hardware in single and bimanual operation, as well as on multiple robots in simulation. Check out the [website](https://utiasdsl.github.io/crisp_controllers/) for demos! - -## Demos - -Some of the things that you can do with our controllers. Check the [crisp_controller_demos](https://github.com/utiasDSL/crisp_controllers_demos) for more information on how to get the controllers running on you robot. - -| ![Franka](media/franka.gif) | ![kinova](media/kinova.gif) | ![iiwa](media/iiwa.gif) | -|:--:|:--:|:--:| -| *Robot following a moving target, while base joint follows a sine curve.* | *Simulated kinova robot with continous joints and nullspace control* | *Simulated iiwa robot example...* | - -| ![franka_eight_reduced](media/franka_eight_reduced.gif) ![franka_ns_reduced](media/franka_ns_reduced.gif) | ![vicon](media/franka_teleop.gif)| -|:--:|:--:| -| *Real robot following a target and being disturbed (contact) + null space control demonstration* | *Demonstration using a cartesian controller teleoperated using Vicon tracking system (Speed x4)*| +CRISP is a collection of C++ controllers for torque-based control for manipulators compatible with `ros2_control`, including Operational Space Control and Cartesian Impedance Control. Robot agnostic and tested on the Franka Robotics FR3 Robot in single and bimanual operation. Check the [docs](https://danielsanjosepro.github.io/crisp_controllers/)! +Check the [project website](utiasDSL.github.io/crisp_controllers) for videos and more! ## Features - πŸ€– 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. - βš™οΈ Dynamically and highly parametrizable: powered by the `generate_parameter_library` you can modify stiffness and more during operation. -- 🐍 Python interface to move your ROS2 robot around without having to think about topics, spinning, and more ROS2 jargon! Check [crisp_py](https://github.com/utiasDSL/crisp_py) for more information and examples. +- 🐍 Python interface to move your ROS2 robot around without having to think about topics, spinning, and more ROS2 concepts. Check [crisp_py](https://github.com/utiasDSL/crisp_py) for more information and examples. - ❓ Demos showcasing how to use the controller with FR3 of Franka Emika in single and bimanual setup. Check the [crisp_controller_demos](https://github.com/utiasDSL/crisp_controllers_demos). ## Getting Started @@ -50,3 +38,13 @@ touch src/crisp_controllers/COLCON_IGNORE # Forget about it ### Docker You can try the controller with the provided Dockerfile and devcontainer setup in [crisp_controller_demos](https://github.com/utiasDSL/crisp_controllers_demos). Our docker setup uses the RT-capabilities if available. If you are using VSCode, you should be able to open the container directly from there using the devcontainer plugin. Check [the devcontainer documentation](https://code.visualstudio.com/docs/devcontainers/containers) for more information. + +### Update the website for contributors + +We use [mkdocs](https://www.mkdocs.org/) to generate the website from markdown. You can modify it within `docs/` in particular the `index.md`. +Then you can serve it locally or update the github pages with: +```bash +uv run mkdocs serve +uv run mkdocs gh-deploy +``` + diff --git a/docs/index.md b/docs/index.md index f6c35fd..6aafe2d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,33 +4,47 @@ hide: - toc --- -CRISP Controllers Logo -# CRISP - **C**a**R**tesian **I**mpedance and Operational **SP**ace control for robotic arm manipulators. -*Authors: Daniel San Jose Pro, Oliver Hausdoerfer, Martin Schuck and Angela Schoellig.* +CRISP Controllers Logo + +# CRISP - **C**a**R**tesian **I**mpedance and Operational **SP**ace Control for Learning-based Policies +*Authors: Daniel San Jose Pro, Oliver Hausdoerfer, Ralf Roemer, Martin Schuck and Angela Schoellig.* > Collection of C++ controllers for torque-based control for manipulators compatible with `ros2_control`, including Operational Space Control and Cartesian Impedance Control. -Check the [controllers :simple-github:](https://github.com/utiasDSL/crisp_controllers) , robot [demos :simple-github:](https://github.com/utiasDSL/crisp_controllers_demos), and simple [python interface :simple-github:](https://github.com/utiasDSL/crisp_py). +Check the [controllers (crisp_controllers) :simple-github:](https://github.com/utiasDSL/crisp_controllers) , robot [demos (crisp_controllers_demos) :simple-github:](https://github.com/utiasDSL/crisp_controllers_demos), a simple [python interface (crisp_py) :simple-github:](https://github.com/utiasDSL/crisp_py), and a [gym wrapper (crisp_gym) :simple-github:](https://github.com/utiasDSL/crisp_gym) for real-world experiments. + +|