Motion Stack

lvl4 whole body movement

ubuntu ros python mit

rtb doit Tests Passing :)

Modular walking robots with distributed computation, or a simple robotic arm, seamlessly bring robots to life with just a URDF! Built for maximum flexibility, ease of use, and source-code customization.

Features


  • Modular, any limb anywhere on the robot

  • Distributed, any process anywhere on the network

  • Hardware agnostic, processes adapt to real-time robot characteristic

  • Inverse Kinematics (3Dof and above)

  • Multi-limb synchronization

  • URDF parser

  • Customizable actuators interface (overload the source-code with what you need)

  • Flexible launch system

  • Documented example of Moonbot Zero

Upcomming Features


  • Multi-limb-motor synchronization (in rework for agnostic system, lvl3 will be deleted)

  • Custom trajectories (in development)

  • High level Pyhton API, API sends ros messages for you to any system

Ros2 Structure Overview


The current basic structure can be interpreted as the following tree:

|                       levels
|   00    |     01      |     02   |   03   |    04   |    05   |
| Motor X -- Joint 0 -- |
| Motor X -- Joint 1 -- +- IK 0 -- Leg 0 -- |
| Motor X -- Joint 2 -- |                   |
|                                           |
| Motor X -- Joint 0 -- |                   |
| Motor X -- Joint 1 -- +- IK 1 -- Leg 1 -- +-  Mover  -- Gait
| Motor X -- Joint 2 -- |                   |
|                                           |
|                                   ...  -- |

The power of this structure lies in its modularity. Packages responsible for a level can be swapped in/out for other packages responsible for the same level.

For example: - When using the real robot, dynamixel_hotplug_ros2_python is used. - When testing without the robot, rviz_basic is used.

|                       levels
|      00       |    01   |   02  |   03  |   04   |  05   |
| ---------------------packages----------------------------
|               |             motion stack
| ---------------------------------------------------------
|   rviz basic  |
| ---------------------------------------------------------
| dynamixel...  |
| ---------------------------------------------------------
| Maxon motr... |

All robots are different. You can easily overload relevant parts of the code and use it like an API in which you inject your custom code. Examples and tools are provided for this purpose. This way, you do not need to create a new, complex ROS2 node to adapt to the quirks of your robot—just change what you need directly.

|                       levels
|      00       |    01   |   02  |   03  |   04   |  05   |
| ---------------------packages----------------------------
|               |             motion stack
| ---------------------------------------------------------
| Overload for my robot   |                        |  Overload for my robot
| ---------------------------------------------------------