Robot Articulation Control (RAC) is a modular, low-level framework for embedded robotics. It provides the core building blocks to model, control, and synchronize robotic articulations across microcontrollers (MCUs) and Embedded Linux systems.
Originally started as a motor control experiment, RAC has evolved into a flexible system for distributed motion control, designed to scale from individual joint controllers to complex articulated mechanisms. The idea is to enable real-time coordination between nodes (MCUs) and higher-level controllers (hosts), with clean abstractions for control logic, communication protocols, and system roles. The main goal is to provide the means to interact with the controllers and not obfuscate the drivers completely from the application.
One of the main challenges is the Linux Real-Time features, that in all pragmatism, is mainly for soft-time real-time applications, however, this is slowly changing.
However, the idea is not to depend directly on any kernel, so that the system is modular. The reason behind mentioning the Embedded Linux platforms is that multiple manufacturers use this for newer robots and its open source nature.
- Suitable for
no_stdembedded targets. - Modular design for motors, encoders, and articulation nodes.
- Planned support for SPI and UART communication layers.
- Use with real-time motion systems (on MCUs or SBCs).
Target development board: STM32F767ZI (Nucleo-144)
- Designing independent modules for the controller, articulations, and communication nodes
- Creating an interface between the nodes and the controller
- Implementing a protocol to allow a reactive motion control
- Beginning real-world testing on embedded hardware
- Planned support for CAN and friends communication layers.
- Ready for use with real-time motion systems (on MCUs or SBCs).
- Planned support for CAN and friends communication layers.
- Ready for use with real-time motion systems (on MCUs or SBCs).
The aim of this project is to provide two dependencies, the RAC Host and the RAC core. The Host will be run on devices that can support the std Rust library, which means that there is a kernel or OS to provide the support for this library. The Core is aimed to be the leanest part of RAC, that can be run on MCU/SoC targets.
⚠️ The project is at a very early stage, there are no significant features developed.
To use in your Rust project:
[dependencies]
robot-articulation-control = { git = "https://github.com/Resnog/robot-articulation-control" }