Lightweight Build
Carbon fiber and 5052 aluminum alloy. M2 under 850g, M3 under 1050g. Mounts on mobile platforms with ease.

The Waveshare RoArm family includes two product lines — the M2 (4-DOF) and M3 (5+1-DOF) — both built on carbon fiber and 5052 aluminum alloy. A 360-degree omnidirectional base combined with flexible joints creates a workspace spanning over one meter in diameter. The innovative dual-drive shoulder design doubles joint torque while maintaining high repeat positioning accuracy through 12-bit magnetic encoders.
The M3 extends the M2 kinematic chain with a 2-DOF articulated wrist (pitch + rotation), enabling more dexterous end-effector positioning at the cost of some payload capacity. Both lines share the same ESP32 MCU, the same JSON command protocol, and the same WiFi/ESP-NOW/serial/HTTP control interfaces. The M3 additionally supports LeRobot for ML-based teleoperation.
Lightweight Build
Carbon fiber and 5052 aluminum alloy. M2 under 850g, M3 under 1050g. Mounts on mobile platforms with ease.
Dual-Drive Shoulder
Two servos on the shoulder joint double torque output. M3 adds a 2-DOF wrist for dexterous manipulation.
JSON Control Protocol
Simple JSON commands over HTTP, serial, or ESP-NOW. Every joint, axis, and function is addressable.
ROS2 + LeRobot
ROS2 workspace with MoveIt2 and Gazebo. M3 adds LeRobot support for ML-based teleoperation.
| Parameter | M2-S | M2-Pro | M3-S | M3-Pro |
|---|---|---|---|---|
| Degrees of Freedom | 4 | 4 | 5+1 | 5+1 |
| Servos | 5× ST3215 (plastic) | 5× ST3235 (all-metal) | 7× ST3215/HS (plastic) | 7× ST3235 (all-metal) |
| Servo Torque | 30 kg.cm @ 12V | 30 kg.cm @ 12V | 30 kg.cm @ 12V | 30 kg.cm @ 12V |
| Wrist | Single axis (EoAT) | Single axis (EoAT) | 2-DOF (pitch + rotation) | 2-DOF (pitch + rotation) |
| Weight | 826g ± 15g | 873g ± 15g | 973.5g ± 15g | 1020.8g ± 15g |
| Payload | 0.5kg @ 0.5m | 0.5kg @ 0.5m | 0.2kg @ 0.5m | 0.2kg @ 0.5m |
| Workspace | 1090mm × 798mm | 1090mm × 798mm | 1120mm × 798mm | 1120mm × 798mm |
| Repositioning Precision | ≈ ±4mm | ≈ ±4mm | ≈ ±5mm | ≈ ±5mm |
| Encoder Resolution | 0.088° (12-bit) | 0.088° (12-bit) | 0.088° (12-bit) | 0.088° (12-bit) |
| MCU | ESP32-WROOM-32 | ESP32-WROOM-32 | ESP32-WROOM-32 | ESP32-WROOM-32 |
| Communication | WiFi, ESP-NOW, Serial, HTTP | WiFi, ESP-NOW, Serial, HTTP | WiFi, ESP-NOW, Serial, HTTP | WiFi, ESP-NOW, Serial, HTTP |
| Power | 12V / 5A (3S LiPo) | 12V / 5A (3S LiPo) | 12V / 5A (3S LiPo) | 12V / 5A (3S LiPo) |
| LeRobot Support | — | — | Yes | Yes |
| ROS2 Support | Yes (Humble) | Yes (Humble) | Yes (Humble) | Yes (Humble) |
Documentation consolidated from the Waveshare Wiki and RoArm-M3 Wiki. Hardware and firmware by Waveshare.