Crospi is a highly-configurable pipeline that focuses on interfacing (plugins, ROS2 and non-ROS sensors, robot hardware, easy user interfaces) and easy integration (pipeline for Orchestration, creation of libraries, configuration files, etc). It uses eTaSL which is a collection of C++/CMake/LUA libraries that define a language and interpreter to specify constraint-based control task specifications. Besides Crospi, there are several other frameworks that use eTaSL, such as ROS/Orocos and ROS2/Orocos (see below). Note that, although the constraint-based task specifications are specified using a scripting language, all real-time critical runs in C++. With Crospi, you can focus on configuring to use your own robot setup in your own orchestrated applications, and easily reuse tasks and skills from libraries.
| Package | Description |
|---|---|
BeTFSM (doc) |
BeTFSM is a library for "ticking" statemachines and behavior trees. It targets discrete coordination of robotic systems at both high- and low level. |
Crospi (doc) |
This package was created to be able to develop constraint-based reactive robot behaviors with eTaSL that can fully operate with the ROS2 architecture. |
├─ crospi_core (doc) |
Core package of Crospi providing important interfacing tools and ROS2 functionalities. |
├─ crospi_application_template |
This is a template that facilitates development and provides development functionalities to speed up development and deployment with Crospi. |
├─ crospi_default_plugins |
This package contains the default plugins for crospi_core. |
├─ crospi_interfaces |
Package containing ros msgs and srv used to communicate with the crospi_core package. |
├─ skill_lib_example |
Package with an example of a skill for Crospi. This contains BetFSM skill orchestration examples. |
├─ core_task_lib |
Package with core and common eTaSL task specifications that can be used within the Crospi pipeline for controlling robots. |
├─ debug_lib |
Package with eTaSL task specifications for debugging that can be used within the Crospi pipeline. |
├─ dummy_lib |
Package with dummy examples of eTaSL task specifications that can be used within the Crospi pipeline. |
├─ template_driver_crospi |
This package contains a template on how to implement a robot driver for crospi_core node using ROS2 plugins. If used without any modification, it will simply simulate the robot by integrating the joint velocities and returning joint positions through shared memory communication. |
├─ kuka_iiwa_driver_crospi |
This package contains a driver for controlling the Kuka iiwa using crospi_core, based on template_driver_crospi package which uses ROS2 plugins. |
├─ expressiongraph |
This package contains a library for automatic differentiation specifically targeted to robotics data-types such as orientations, quaternions, poses, twists and wrenches |
├─ luabind |
This package contains C++ template utilities to bind C++ code to lua |
While Orocos is nowadays maintained externally, we keep some packages that can prove useful:
| Package | Description |
|---|---|
| rtt_ros_utilities | A meta-package containing the following packages: |
├─ rttlua_completion |
Enables tab completion in the rttlua shell |
├─ rFSM |
State machine framework for Lua |
├─ rtt_dot_service |
Creates a DOT graph from the current deployment |
| python_gui | Configurable ROS graphical interface to send events to rFSM |
| URDriver | Drivers for using UR robots with ROS |
| rtt_soem | EtherCAT master component with plugins (mainly Beckhoff modules) |
| rtt_soem_maxpos | EtherCAT drivers for the MaxPos, a motor driver from Maxon motors |
| Package | Description |
|---|---|
| rtt_ros2_utilities | A meta package containing the following packages: |
├─ motion_control |
Legacy message types (ros2 branch) |
├─ rFSM |
State machine framework (ros2 branch) |
├─ ros2_rtt_typekits |
Typekits for Eigen and KDL |
├─ rtt_dot_service |
Generates DOT graphs (ros2 branch) |
├─ rttlua_completion |
Lua shell tab completion (ros2 branch) |
| rtt_ros2_pkg | Adds commands for creating Orocos packages in rtt-ros2 integration |
| python_gui_ros2 | Configurable ROS2 graphical interface to send events to rFSM |
| soem | ROS2 EtherCAT dependency (use the foxy_devel branch) |
| rtt_soem | EtherCAT master component with plugins (mainly Beckhoff modules) (ros2 branch) |
Prebuilt Docker images for ROS1 and ROS2 with the above utilities installed: