|
Robot Control
A framework for realtime robot control
|
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.
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:
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.
To verify the installation, you can start the mock_gui:
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.
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.
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.
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.
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.
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".
TODO