MATS (Modular Actuated Transforming System) is a modular robot with two types of modules: Brick modules for connections and Joint modules with actuated servos. Unlike many modular robots, MATS allows easier morphology changes without manual disassembly and reassembly for each configuration.
The cable management of robotic systems like this can often also become messy, with wires running between modules. This project focused on creating a clean, efficient system with screw-free, robust connections to simplify assembly and maintain functionality. A unique feature of this robot is the absence of core modules; all Brick modules are identical, simplifying assembly and ensuring consistent functionality. I focused on a minimalist yet functional design to simplify manufacturing while ensuring intuitive use and visual appeal, covering both the fastening mechanism and cable management.
The modules are inspired by Revolve2, which is a framework focusing on modular robotics. The software used to directly control the robot is the Dynamixel SDK, a software development kit that supports multiple programming tools and languages, including Python and ROS. For this project, I programmed the robot’s movements using Python and tested various custom movements that I developed. The robot communicates directly with a PC via a U2D2 USB communication converter.
This project developed a durable, visually appealing modular robot with easy-to-assemble modules, seamless connections, and efficient cable management. Its minimalist design simplifies use and supports future advancements in modular robotics.
Click the image to watch the MATS demo on YouTube (with sound)
Click the image to watch on YouTube
Small worm configuration |
Riverdancing quadruped |
4-legged breakdancing spider |
Large snake configuration |
The following components were used in the development of MATS:
- U2D2 USB communication converter
- U2D2 Power Hub Board
- Dynamixel AX-18A servo
- 3D printed modules with PLA and ABS (CAD modelled in SolidWorks)
- Neodym magnets
Complete list of bill of materials:
Main components:
| Item | Description | Quantity |
|---|---|---|
| 1 | Robotis U2D2 USB communication converter | 1 |
| 2 | Robotis U2D2 Power Hub Board | 1 |
| 3 | Dynamixel AX-18A servo | 8 |
Mounting components:
| Item | Description | Quantity |
|---|---|---|
| 1 | Dynamixel-AX Bioloid FP04-F2 frame | 8 |
| 2 | Dynamixel-AX Bioloid FP04-F3 frame | 8 |
| 3 | RS PRO Neodym magnet 2.09 kg - 12 mm | 52 |
Connectors and wiring:
| Item | Description | Quantity |
|---|---|---|
| 1 | Robotis 3P Extension PCB | 9 |
| 2 | 3P Molex male to female adapter | 36 |
| 3 | Self-assembled 3P Molex cable 4 cm | 36 |
| 4 | Self-assembled 3P Molex cable 8 cm | 16 |
| 5 | Self-assembled 3P Molex cable 18 cm | 16 |
| 6 | Self-assembled 3P Molex cable 50 - 100 cm | 1 |
| 7 | Micro USB cable | 1 |
Fasteners:
| Item | Description | Quantity |
|---|---|---|
| 1 | Bioloid Plastic Busher BPF-BU | 8 |
| 2 | Bioloid Plastic Washer BPF-WA | 8 |
| 3 | M3 bolts | 8 |
| 4 | M2 screws | 164 |
| 5 | M2 nuts | 32 |
For 3D-printing:
| Part | Material | Quantity | Infill | Layer height |
|---|---|---|---|---|
| Block module | ABS | 9 | 20 % | 0.2 mm |
| Servo holder | ABS | 16 | 20 % | 0.2 mm |
| Lid | PolyMaker PLA | 18 | 20 % | 0.2 mm |
| Power Hub Board base | PolyMaker PLA | 1 | 20 % | 0.2 mm |
Set up the environment:
$ conda create --name mats_env --file requirements.txt
$ conda activate mats_env
After installation, make sure:
- U2D2 Power Hub Board is turned ON and connected to the robot
- USB from the U2D2 is connected to your computer to the right port
Then you can run your Python files from the src folder with examples:
python breakdance.py
python wake_up.py
python dance.py
- Integrate Molex connectors: Combine with mating connectors for seamless integration and use magnets for attachment and servo communication.
- Expand connectivity: Modify Brick modules for six-sided connectivity instead of four-sided to increase flexibility.
- Add adapters: Develop connectors for linking modules directly, including 360° revolute joints for modular manipulators.
- Use a microcontroller or a Raspberry Pi: Enable wireless control and communication with the robot.
- Incorporate a battery as the power source: Address the challenge of module size, or consider a core module to house the battery and hardware.
- Use simulations, evolutionary algorithms, and artificial intelligence: Optimize the robot’s movements efficiently.
- Address the reality gap: Develop methods to transfer optimized movements from simulations to the real-world robot, minimizing performance differences.




