Skip to content

ctrlX AUTOMATION Software Development Kit for ROS 2

License

Notifications You must be signed in to change notification settings

boschrexroth/ctrlx-automation-sdk-ros2

Repository files navigation

ctrlX AUTOMATION Software Development Kit for ROS 2

This is the Software Development Kit (SDK) to build ROS 2 Applications, that can run on industrial devices that are based on the ctrlX OS platform.

The Robot Operating System (ROS) is an open source robotics software framework that help you build robot applications. ctrlX OS is an industrial grade realtime platform based on Linux which is available for several industrial hardware devices and features an app-based modular architecture that allows you to install additional functionality. This includes apps for industrial fieldbus communication, machine automation, programmable logic control (PLC) and other automation software which can also be found ready-to-run in the ctrlX Store.

Please note, that this is the first version of the ROS 2 SDK. You may expect more samples and extensions over the course of the next months.

Getting Started

As a prerequisite you should get yourself familiar with:

Usage

This SDK builds on top of the ctrlX AUTOMATION SDK to make apps for ctrlX OS, which is itself based on Ubuntu Core Distribution and a Linux kernel with PREEMPT_RT patch.

ctrlX OS, Ubuntu Core, as well as ROS 2 are released as distributions. This release of the SDK is intended to be used with:

All projects use Visual Studio Code as editor.

ROS 2 Humble Base Snap

To build and deploy a ROS 2 application to ctrlX OS it needs to be package as snap. In order to make your development process as efficient as possible we recommend splitting your ROS 2 deployment into at least two snaps. A so-called base snap is used to encapsulate the ROS 2 runtime as well as libraries which are dependencies to your application. The base snap is installed on ctrlX OS once and provides the compiled runtime and libraries to one or more ROS 2 application snaps which hold your business logic. Following this approach you can reduce build times and resource footprint on the device by sharing the ROS 2 dependencies.

For details have a look at the instructions for the ROS 2 Humble Base Snap which also shows you how to compile ROS 2 for ctrlX OS.

If you nevertheless want to go with a single app, then use the base snap and integrate your ROS 2 application directly.

Samples

This SDK contains also multiple project examples to show the usage of ROS 2. All examples build on top of the base snap.

ROS 2 Humble Applications in C++

Learn how to package your application as snap

This example is based on the official ROS 2 Tutorial and adjusted to run on ctrlX OS together with the base snap. You can find the original source code at ROS 2 Humble Tutorials - Writing a simple publisher and subscriber (C++)

Learn how to access the ctrlX Data Layer from your application

the ctrlX Data Layer is the realtime message broker that runs on ctrlX OS. It is used by all ctrlX Apps to publish and exchange variables, types, methods and programs. In the ctrlX Data Layer you can find all device, process, fieldbus and periphery data. You can connect to the ctrlX Data Layer via TCP/IP or IPC.

ROS 2 Humble Applications in Python

Writing a Simple Publisher and Subscriber (Python)

This example is based on the official ROS 2 Tutorial and adjusted to run on ctrlX OS together with the base snap. You can find the original source code at ROS 2 Humble Tutorials - Writing a simple publisher and subscriber (Python)

Writing a Simple Publisher and Subscriber with ctrlX Data Layer Access (Python)

Both sample projects are based on the same official ROS 2 tutorial as mentioned above. Additionally, the example is extended with access to the ctrlX Data Layer using the ctrlX SDK.

  • simple-talker-dl-py/ Reads a Data Layer value and publishes it as ROS 2 message under a specific topic.
  • simple-listener-dl-py/ Subscribes messages of the topic, receives the value and writes it into the ctrlX Data Layer.

Support

This repository is provided and maintained by Bosch Rexroth. Feel free to check out and be part of the ctrlX AUTOMATION Community. Get additional support, e.g. related to Bosch Rexroth Devices, Apps, SDKs and Services, or leave some ideas and feedback.

To report bugs, request changes and discuss new ideas you may also have a look at the issue tracker of this repository: https://github.com/boschrexroth/ctrlx-automation-sdk-ros2/issues

Important directions for use

Areas of use and application

The content (e.g. source code and related documents) of this repository is intended to be used for configuration, parameterization, programming or diagnostics in combination with selected Bosch Rexroth ctrlX AUTOMATION devices. Additionally, the specifications given in the "Areas of Use and Application" for ctrlX AUTOMATION devices used with the content of this repository do also apply.

Unintended use

Any use of the source code and related documents of this repository in applications other than those specified above or under operating conditions other than those described in the documentation and the technical specifications is considered as "unintended". Furthermore, this software must not be used in any application areas not expressly approved by Bosch Rexroth.

Changelog

* 2023-09-01: 2.0.0 - Initial release for ROS 2 Humble Hawksbill.

About

SPDX-FileCopyrightText: Copyright (c) 2024 Bosch Rexroth AG

https://www.boschrexroth.com/en/dc/imprint/

Licenses

SPDX-License-Identifier: MIT