Robot Control
A framework for realtime robot control
Loading...
Searching...
No Matches
Getting Started

Robot Control is a modern and unified C++ robot control framework for Linux.

This documentation discusses the installation and usage of the framework, together with fundamental design decisions and design patterns, as well as the requirements that shaped these decisions.

Authored by Christian Dreher, Rainer Kartmann, Pascal Weiner, Christoph Pohl, and Fabian Reister.

Installation

The recommended way of installation is by using Axii for Ubuntu 18.04, 22.04 or 24.04.

Create a new Axii workspace, add the framework modules:

# Create a workspace called "rt" in `$HOME/rt` and activate it.
# Feel free to change the location as you like.
axii workspace create ~/rt rt --empty
# Activate the workspace to work with it.
axii workspace activate rt
# Add the core framework with EtherCAT integration to the workspace.
axii workspace add robot_control

With the following command, Axii will fetch the source code of all software modules of the framework together with its dependencies, build them, and install them.

axii workspace upgrade

To verify the installation, you can start the mock_gui:

cd robot_control/robot_control/build/bin
./mock_gui ../../configurations/mock_controllers.xml

Here, you can play around with simulated controllers to tune a controller and see its step response. For this, the UI provides slides to the left to tweak its proportional, derivative and integral gains. You can test the step response by pushing the "Toggle Setpoint" button.

Note
For development and testing purposes, this is all you need to get started, but you will see warnings that the unit failed hardening the realtime thread. For productive environments, the system needs to be set up properly for realtime requirements. Please follow the Realtime System Setup guide.

Usage

The most important class in this framework is the Unit. An object of this class operates the field bus, schedules all requested controllers and updates them, and provides services such as communication between non-realtime and realtime.

Concepts

This framework contains many concept that have proven over the past years. In order to understand requirements and design choices, they have to be introduced first for a op-down understanding of the ideas behind the framework.

Robot

From the perspective of a low-level realtime framework, a robot can primarily be described by a collection of sensors and a collection of actuators. Specifically, maps are used that map sensor and actuator names to the respective sensors and actuators. Additionally, for some higher-level controllers, kinematic or dynamic robot models might be required.

Bus

For most robots, a field bus is used for the communication between the sensors and actuators to the central control computer. Several bus protocols can be used, such as CAN or EtherCAT. In this framework, a reference implementation for EtherCAT is provided by integrating SOEM. In the scope of this framework, the bus is an abstraction that is able to obtain all available sensors and actuators from the physical field bus.

Unit / Realtime Unit

The unit is the central component of this framework. From the point of view of the unit, a bus is nothing but a source for sensors and actuators, and that the bus needs to be operated (updated etc.).

Since the core functionality of the unit is in the realtime loop, it is sometimes also referred to as "realtime unit".

One-Joint Controllers, N-Joint Controllers, Virtual-Joint Controllers

TODO

Related Work