[orocosusers] Updates on Orocos ROS 1 and 2 integration

Dear community members,

We are happy to announce that we are making a big push forward on Orocos
<https://www.orocos.org />, 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 <https://www.orocos.org /> 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
<https://github.com/orocos-toolchain/orocos_toolchain/issues/18>)
-

Orocos - ROS 1 integration recent updates (rtt_ros_integration
<https://github.com/orocos/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
<https://github.com/orocos/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
<https://index.ros.org/doc/ros2/Tutorials/Intra-Process-Communication />
, loaned messages <http://design.ros2.org/articles/zero_copy.html> 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 <https://www.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. This announcement was also submitted to ROS Discourse
<https://discourse.ros.org /> in this topic
<https://discourse.ros.org/t/updates-on-orocos-ros-1-and-2-integration/15146>.
In case you have questions or comments, I would kindly ask you to join that
platform if you are not a member yet, and post them to this topic. For
technical reasons it is not possible to subscribe to this mailing list
anymore for quite some time now, and we are looking for a replacement. A
new category on ROS Discourse might be one of the options, although not all
Orocos users are also ROS users.

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