Dear community members,
We are happy to announce that we are making a big push forward on Orocos, made possible with the support of the European Union’s Horizon 2020 ROSIN project (www.rosin-project.eu) and Houston Mechatronics (https://www.houstonmechatronics.com/).
The Orocos project came to live almost 20 years ago with the goal to develop a framework for real-time safe interaction between individual software components in a robotics system, and to establish a library of ready-to-use components. The Orocos Real-Time Toolkit (RTT) and Component Library (OCL) is still actively developed and used by research groups and companies to realize their projects. Other projects were added to the Orocos ecosystem, like the Bayesian Filtering Library (BFL) and the Kinematics and Dynamics Library (KDL).
The main objective is to provide a high quality integration of ROS 1 and ROS 2 with Orocos that can be used out of the box by robotics companies developing real-time robotic systems.
The technical objectives are
- to upgrade the ROS 1 integration with Orocos for smooth interoperation between the core ROS tooling and functionality, and
- to provide the integration of ROS 2 with Orocos in order to communicate data between both frameworks in a real-time safe way.
Moreover we intend to provide this integration as open-source software freely available to the community, to document the software following the best practices established in the ROS community, and provide examples and tutorials on its use.
Development is already ongoing. A short overview on the status:
-
Finalizing the release of the Orocos Toolchain 2.10 into active ROS 1 and ROS 2 distributions (orocos-toolchain/orocos_toolchain#18)
-
Orocos - ROS 1 integration recent updates (rtt_ros_integration)
- Generalized support for ROS service calls using real-time safe Orocos operation callers and providing ROS services that execute as Orocos operations in a real-time context, e.g. by adapting std_srvs/Empty or custom user-types to the signature of the respective operation
- There are many ideas on how to improve and the existing rtt_ros_integration packages and integrate Orocos application with ROS deployments more smoothly. Most new work will be taken up over summer.
-
We are about to conclude the new Orocos - ROS 2 integration which can be found here: https://github.com/orocos/rtt_ros2_integration
- RTT typekit generation from ROS 2 interface packages (messages, services and actions)
- native ROS 2 transport to connect ports to ROS 2 publishers and subscribers (
rtt_ros2_topics
) - bridge ROS 2 services to RTT operations (
rtt_ros2_services
) - read/write ROS 2 parameters from an RTT service (
rtt_ros2_params
) - Unit test coverage for core functionality
- Setup and integration with continuous integration tools (ROS-I CI)
-
After the first functional ROS 2 integration is ready and if time allows us, we would like to address some more advanced topics, for example to
- adapt the RTT port API for better integration with ROS intra-process publishing, loaned messages and custom allocators,
- refactor the Orocos package build system based on pkg-config to better integrate with modern CMake and build systems used by the ROS community, like catkin and ament
-
Documentation, quality and community management
- Reinstated (+ will renew) the orocos.org website and documentation
- Orocos documentation generated from Markdown documents, maintained in the source repositories
- We’re collecting all existing documentation, examples and tutorials. We would be more than happy to have you involved to plug the holes!
We are looking forward to your involvement!
Shortly we will be sending more details on how we see the community portal and the technical work, followed by a questionnaire to collect your input and requirements. For now, please use this ROS Discourse topic for questions, comments, or just to express your interest in the topic.
For the technical work, we will use the issue tracker of the GitHub repositories linked above to detail the plans and to discuss.
Stay tuned for more updates!
Best regards,
Johannes and the Intermodalics/Orocos team