Skip to content
Open-source robotics project

ROS 2 robot armon virtual DYNAMIXEL

SmartManipulator-X lets the unchanged ROBOTIS OpenMANIPULATOR-X ROS 2 stack drive a BCN3D Moveo arm: a SmartFusion2 controller answers DYNAMIXEL Protocol 2.0 as virtual servos and drives the stepper motors, while the Robot PC runs ros2_control in Docker.

  • ROS 2 Jazzy
    in Docker
  • SmartFusion2
    Zephyr RTOS
  • DYNAMIXEL
    Protocol 2.0
  • Apache-2.0
    open source
Isometric scene: a Robot PC running ROS 2 sends DYNAMIXEL packets over USB to a SmartFusion2 board with six TMC5160 drivers, which moves a BCN3D Moveo arm
The problem

Servo software, stepper hardware

The ROBOTIS OpenMANIPULATOR-X stack is a complete ROS 2 arm application, but it expects DYNAMIXEL smart servos that answer Protocol 2.0 from their Control Tables. The BCN3D Moveo is a printed arm with NEMA stepper motors and no bus at all. Porting the ROS side to every new arm is expensive, so SmartManipulator-X moves the adaptation into a controller that looks like DYNAMIXEL servos to the host.

Keep the ROS 2 stack unchanged

The SmartFusion2 answers as virtual DYNAMIXEL devices: six stepper axes (IDs 1–6), the gripper servo (ID 7) and a controller device. The simulation firmware passes the protocol conformance check, 49 of 49, on native_sim.

  • Protocol 2.0
  • Control Table
  • Zephyr

Develop without the arm

The Robot PC runs ros2_control with mock hardware on a Docker network that stands in for the Ethernet link; a second container checks discovery, the controllers and a trajectory over DDS.

  • Docker
  • ros2_control
  • DDS

A model from the real mechanics

The robot description is generated from the BCN3D Moveo CAD: joint axes from the axles, link lengths of 231.64, 221.12 and 223.00 mm, visual and collision meshes, the gripper linkage.

  • STEP to URDF
  • Xacro
  • Meshes
What you get

One system from MoveIt to the stepper driver

Three computers and one contract: the Robot PC with ROS 2 control, the SmartFusion2 controller with its firmware and FPGA design, and the Operator PC for planning and simulation, documented together.

6 + 1stepper axes + gripper
49/49protocol checks on native_sim
460800bps host link
JazzyROS 2 on the Robot PC

Quick start

The Robot PC in simulation, in two commands

No board and no arm are needed: the Robot PC runs ros2_control with mock hardware in Docker, on a network that stands in for the Ethernet link to the Operator PC. A second container on the same network checks it over ROS 2 DDS.

git clone https://github.com/SystemFromScratch/sfs-smartmanipulator-x-robot.git
cd sfs-smartmanipulator-x-robot

docker compose -f docker/docker-compose.yml up --build robot_pc                 # terminal 1: the Robot PC
docker compose -f docker/docker-compose.yml run --rm probe smx_smoke_test.sh    # terminal 2: a second host

The smoke test passes when it receives /joint_states, finds the joint_state_broadcaster, arm_controller and gripper_controller active, and arm_controller executes a short trajectory. In VS Code, Ctrl+Shift+B offers the same steps as tasks (Getting started).

Find your way

If you want to… Read
Understand the system, its repositories and its current state Overview
Run the Robot PC and check it from a second host Getting started
Change the image, the workspace, the robot model or these docs Development
Connect the Operator PC or the real controller board Robot PC
See how the Robot PC, the firmware and the Operator PC fit together System architecture
Check what the host expects from the virtual DYNAMIXEL devices DYNAMIXEL compatibility
Build the controller firmware or test the axes Firmware, Motor tester GUI
Wire the Hello FPGA Kit, the TMC5160 drivers and the servo Hardware
Read everything offline or print it PDF user manual
SystemFromScratch®

Part of an open-source embedded portfolio

SmartManipulator-X is developed by Anton Vynohradov under SystemFromScratch® — embedded software and hardware built from the first schematic to certification.

SystemFromScratch® is a registered trademark. ROBOTIS, DYNAMIXEL and OpenMANIPULATOR are trademarks of ROBOTIS Co., Ltd.; SmartFusion2 is a trademark of Microchip Technology Inc.; SmartManipulator-X is not affiliated with or endorsed by them.