Motion Stack
From modular robots with distributed computation, to a simple robotic arm, the motion stack provides control for (multi-)limbed systems. The goal of the project is maximum flexibility reflecting the flexibility of modular robotics, while abstracting away the complexity of such systems.
Table of Contents:
Features
Modular – any limb anywhere on the robot.
Distributed – any process anywhere on the network (ROS2 interface).
Runtime hardware agnosticism – adapts in real-time to robot characteristics.
Separation of concerns – team-member implementations and robot specificities, minimally impacts the other systems.
Inverse Kinematics – 3Dof and above.
Multi-limb synchronization
TUI included – control your robot through a Terminal User Interface.
Customizable interfaces – Use the API and override the source-code for your robot and team.
URDF parser
Flexible launch system
Documented example of Moonbot Zero

Motion-Stack API synchronizing 3 different robots over the network, totaling 6 end-effectors.
Upcomming Features
Deprecation of lvl 3, 4 Level 3 and 4 have been replaced by the much safer and versatile high level API.
Advanced launcher with new robot and advanced modularity.
Zenoh interface to replace ROS2.
Ros2 Structure Overview
The current basic structure can be interpreted as the following tree:
| levels
| 00 | 01 | 02 | High Lvl API |
| Motor X -- Joint 0 -- |
| Motor X -- Joint 1 -- +- IK 0 -- | +- Python API
| Motor X -- Joint 2 -- | | |
| | +- Python API
| Motor X -- Joint 0 -- | | |
| Motor X -- Joint 1 -- +- IK 1 -- + - +- Python API -- TUI
| Motor X -- Joint 2 -- | | |
| | +- Python API
The power of this structure lies in its modularity. Levels can be modified, swapped and assembled while remaining compatible with other levels. This can happen anywhere on the network, lvl02 doesn’t need to run on every robot, so one can assemble several lvl1 and control them with one lvl2 IK.
Several higher levels, can also – more or less – control the same lower level. This is very useful when several APIs control the same robot, so several people can take control and do their experiment seamlessly.
Operator TUI:
Deprecated Code:
- easy_robot_control package
- Subpackages
- Submodules
- easy_robot_control.EliaNode module
- easy_robot_control.gait_key_dev module
- easy_robot_control.gait_node module
- easy_robot_control.ik_heavy_node module
- easy_robot_control.joint_state_interface module
- easy_robot_control.lazy_joint_state_publisher module
- easy_robot_control.leg_api module
- easy_robot_control.leg_node module
- easy_robot_control.mover_node module