---
title: "Best actuator SDKs"
description: "Which robot actuator brands have the best SDK: protocol openness, bindings, ROS 2 and sim, docs, firmware, support and comms reliability, scored from objective checks and developer posts on Reddit, Hacker News and GitHub."
canonical: https://actuatorlist.com/sdk
last-updated: 2026-11-03T14:29:08.000Z
---
# Best actuator SDKs

How painful each actuator brand is to talk to from software, scored 0 to 100 on seven dimensions for 21 brands. 1069 community claims back the scores, from 3513 matching posts out of 9987 scanned. As of 2026-11-03. Interactive page with presets, heatmap, radar compare and evidence drill-down: https://actuatorlist.com/sdk. JSON: https://actuatorlist.com/api/v1/sdk.

## Leaderboard (balanced preset)

| # | Brand | Overall | Protocol | Bindings | ROS 2 / sim | Docs | Firmware | Support | Comms | Evidence | Confidence |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | **ODrive** (`odrive`) | 75 | 82 | 77 | 71 | 79 | 60 | 68 | 85 | 126 | high |
| 2 | **mjbots moteus** (`mjbots`) | 73 | 87 | 78 | 11 | 85 | 80 | 87 | 89 | 53 | high |
| 3 | **Robotis Dynamixel** (`robotis`) | 68 | 79 | 54 | 64 | 86 | 45 | 69 | 82 | 153 | high |
| 4 | **Trinamic** (`trinamic`) | 62 | 87 | 69 | 12 | 79 | 83 | 50 | 47 | 108 | high |
| 5 | **VESC** (`vesc`) | 60 | 84 | 48 | 50 | 49 | 67 | 90 | 43 | 183 | high |
| 6 | **Harmonic Drive** (`harmonic-drive`) | 56 | 90 | 10 | 10 | 90 | 90 | n/a | n/a | 0 | low |
| 7 | **maxon EPOS** (`maxon`) | 54 | 88 | 48 | 47 | 87 | 10 | n/a | 45 | 42 | high |
| 8 | **Feetech** (`feetech`) | 53 | 87 | 55 | 50 | 49 | 24 | 90 | 31 | 65 | high |
| 9 | **LKMTech** (`lkmtech`) | 50 | 90 | 50 | 10 | 10 | 90 | n/a | n/a | 1 | low |
| 10 | **Waveshare (Feetech OEM)** (`waveshare`) | 48 | 90 | 45 | 16 | 79 | 12 | 50 | 47 | 25 | medium |
| 11 | **Hiwonder** (`hiwonder`) | 47 | 84 | 48 | 12 | 85 | 13 | n/a | 41 | 51 | high |
| 12 | **RobStride** (`robstride`) | 47 | 52 | 59 | 44 | 50 | 12 | 90 | 36 | 25 | medium |
| 13 | **MyActuator** (`myactuator`) | 42 | 51 | 44 | 50 | 49 | 13 | 50 | 42 | 42 | high |
| 14 | **Unitree** (`unitree`) | 42 | 15 | 71 | 75 | 47 | 13 | 33 | 36 | 95 | high |
| 15 | **CubeMars** (`cubemars`) | 39 | 86 | 43 | 10 | 41 | 13 | 45 | 39 | 38 | medium |
| 16 | **DAMIAO** (`damiao`) | 37 | 51 | 42 | 50 | 11 | 12 | n/a | 44 | 30 | medium |
| 17 | **Steadywin** (`steadywin`) | 33 | 11 | 50 | 50 | 12 | 16 | 45 | n/a | 10 | low |
| 18 | **Xiaomi CyberGear** (`xiaomi`) | 32 | 50 | 46 | 12 | 12 | 11 | 49 | n/a | 18 | medium |
| 19 | **ATAR Robot** (`atar`) | 32 | 50 | 10 | 10 | 50 | 10 | n/a | n/a | 0 | low |
| 20 | **INNFOS** (`innfos`) | 22 | 10 | 50 | 10 | 11 | 10 | 12 | n/a | 4 | low |
| 21 | **ENCOS** (`encos`) | 20 | 10 | 10 | 10 | 10 | 10 | n/a | n/a | 0 | low |

## Reader presets

Weights per dimension; the overall score is the weighted mean of all seven, where a dimension with no checks and no posts counts as 50.

| Preset | Protocol | Bindings | ROS 2 / sim | Docs | Firmware | Support | Comms | Top 3 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Balanced | 15% | 15% | 15% | 15% | 15% | 10% | 15% | ODrive, mjbots moteus, Robotis Dynamixel |
| ROS 2 shop | 10% | 10% | 35% | 15% | 5% | 10% | 15% | ODrive, Robotis Dynamixel, mjbots moteus |
| Python hobbyist | 5% | 30% | 5% | 30% | 10% | 15% | 5% | mjbots moteus, ODrive, Robotis Dynamixel |
| Embedded | 35% | 5% | 0% | 15% | 20% | 5% | 20% | mjbots moteus, ODrive, Harmonic Drive |
| RL / sim-first | 10% | 20% | 30% | 10% | 5% | 5% | 20% | ODrive, Robotis Dynamixel, mjbots moteus |

## Method

- **Objective checks** (60% of a dimension when present): is the protocol published, which official or community libraries exist, ROS 2 drivers and URDF / MJCF models, docs, open firmware and config tools, plus the maker's repository activity and median time to close issues. Each check cites its source.
- **Community signal** (up to 40%, growing with the number of posts): developer posts on Reddit, Hacker News and GitHub issues that name a brand are matched by alias, then each post was read once by Claude Code (one-off review session, 2026-11-03), reading each matched post against the labelling guide; no model API in the pipeline, who labelled the claim's dimension and polarity and wrote a one-line summary in our words; the labels are committed and no model API runs. A post's weight halves every 24 months, and a GitHub issue counts 0.35 of a discussion post because trackers collect bug reports. A small pull toward 50 keeps a dimension resting on one check off 0 and 100. No quotes or usernames are stored. The Reddit posts are a one-off seed collected on 2026-11-03 that also searched comments and subreddits beyond the 6 the free collector covers (r/robotics, r/ROS, r/diyrobotics, r/robotdogs, r/AskRobotics, r/embedded, posts only); 70 of the 99 Reddit claims come from those extra venues or comments, and a fresh collection will not find them again.
- **Label check**: 150 posts were labelled separately (one reviewer reading each post in full before seeing the classifier output (agent-assisted; maintainer spot check pending)); agreement with the committed labels per dimension: Protocol 99% (4 gold claims), Bindings 98% (2 gold claims), ROS 2 / sim n/a (no gold claims), Docs 99% (4 gold claims), Firmware 98% (2 gold claims), Support 99% (2 gold claims), Comms 100% (2 gold claims). Most gold posts make no claim, so agreement mostly counts both raters finding nothing; the gold claim counts show how much it rests on. Scores are only written when every dimension reaches 80%.
- **Confidence**: high at 40 or more evidence items, medium at 15, else low.

## Brands

### 1. ODrive: 75

Ships: ROS 2 (official), Python (official), C++ (official), Open firmware (official), Documented protocol (official). Recurring complaints: ros2-driver-bugs (20), bricked-or-flashing-pain (10), config-tool (8). Catalog actuators: `odrive-v36`, `odrive-s1`, `odrive-pro`.

- **Protocol openness**: 82 (1 positive, 10 negative posts). yes: CAN protocol published[^1]
- **Languages and bindings**: 77 (1 positive, 20 negative posts). yes: Official Python package[^2]; yes: Official Arduino / C++ library[^3]
- **ROS 2 and sim**: 71 (1 positive, 36 negative posts). yes: Official ROS 2 node with ros2\_control[^4]
- **Docs and examples**: 79 (0 positive, 4 negative posts). yes: Versioned documentation site[^1]
- **Firmware and tooling**: 60 (4 positive, 43 negative posts). partly: Firmware source published (v3 boards only)[^5]; yes: Command-line config and firmware update tool[^2]
- **Support and community**: 68 (0 positive, 1 negative posts). yes: Maker repository updated in the last 12 months[^5][^4]; partly: Median time to close recent issues: 42 days[^5][^4]
- **Comms reliability**: 85 (0 positive, 5 negative posts). yes: Cyclic CAN messages documented[^1]

Newest evidence:

- 2026-10-31, GitHub issues RoboDurden/Hoverboard-Firmware-Hack-Gen2.x, Protocol, positive: An open motor firmware project switched to the ODrive CANSimple protocol in place of its own outdated binary format. https://github.com/RoboDurden/Hoverboard-Firmware-Hack-Gen2.x/issues/171
- 2026-10-26, GitHub issues ForteFibre/fibril\_zephyr, Bindings, negative: A team writing its own ODrive CAN driver for Zephyr found state tracking bugs that can leave the axis in closed loop. https://github.com/ForteFibre/fibril_zephyr/issues/47
- 2026-10-22, GitHub issues RPI-Robotics/Robotcode-IGVC, Firmware, negative: The ODrive S1 firmware offers no allowable error or deadzone setting, which makes low-resolution encoders jitter at zero velocity. https://github.com/RPI-Robotics/Robotcode-IGVC/issues/93
- 2026-10-12, GitHub issues Anatol-Gogoj/Robot-MakingRobot, Comms, negative: An ODrive that has just powered up returns garbage values over its link for roughly half a minute. https://github.com/Anatol-Gogoj/Robot-MakingRobot/issues/132
- 2026-10-07, GitHub issues Duet3D/RepRapFirmware, Bindings, negative: A firmware integration for ODrive boards over CAN accepts node addresses that index past its arrays and computes torque from bad data. https://github.com/Duet3D/RepRapFirmware/issues/1307

### 2. mjbots moteus: 73

Ships: Python (official), C++ (official), Open firmware (official), Documented protocol (official). Recurring complaints: config-tool (8), missing-bindings (2), calibration (2). Catalog actuators: `mjbots-qdd100`, `mjbots-moteus-r4-11`, `mjbots-moteus-c1`.

- **Protocol openness**: 87 (2 positive, 1 negative posts). yes: CAN-FD register map published[^6]
- **Languages and bindings**: 78 (3 positive, 14 negative posts). yes: Official Python and C++ libraries[^7][^8]
- **ROS 2 and sim**: 11 (0 positive, 1 negative posts). no: Official ROS 2 driver[^7]; no: URDF or MJCF models from the maker[^7]
- **Docs and examples**: 85 (1 positive, 5 negative posts). yes: Reference manual and runnable examples[^6]
- **Firmware and tooling**: 80 (3 positive, 19 negative posts). yes: Firmware source published (Apache 2.0)[^7]; yes: Config and tuning GUI (tview)[^7]
- **Support and community**: 87 (2 positive, 0 negative posts). yes: Maker repository updated in the last 12 months[^7]; yes: Median time to close recent issues: 3 days[^7]
- **Comms reliability**: 89 (0 positive, 2 negative posts). yes: Fast CAN-FD bitrates documented[^6]

Newest evidence:

- 2026-10-26, GitHub issues Autonomous-Robotics-Carleton/arc-monorepo, Protocol, positive: mjbots publishes the moteus register protocol, which the team plans to build its steering bus spec on. https://github.com/Autonomous-Robotics-Carleton/arc-monorepo/issues/163
- 2026-10-21, Reddit r/DroneXL, Firmware, positive: A builder rewrote the servo drive firmware so it talks directly to a flight controller. https://www.reddit.com/r/DroneXL/comments/1xb8ynw/joshua_bird_flies_a_3d_printed_drone_on_a_single/
- 2026-10-19, Hacker News Hacker News, Support, positive: The lead developer of the moteus controllers has always been very helpful with questions. https://news.ycombinator.com/item?id=50157318
- 2026-07-21, GitHub issues TritonBots/TritonBots-2027, Bindings, negative: There is an official moteus Arduino library but STM32 users must rely on poorly documented community ports. https://github.com/TritonBots/TritonBots-2027/issues/8
- 2026-07-17, GitHub issues mjbots/moteus, Bindings, negative: The moteus C++ transport library fails to compile on macOS because it defaults to a baud constant Apple does not define. https://github.com/mjbots/moteus/issues/118

### 3. Robotis Dynamixel: 68

Ships: ROS 2 (official), Python (official), C++ (official), Rust (community), URDF (official), MJCF (community), Documented protocol (official). Recurring complaints: bus-errors-timeouts (19), ros2-driver-bugs (16), missing-bindings (8). Catalog actuators: `dynamixel-xm540-w270-t`, `dynamixel-xh540-w270-t`, `dynamixel-h54-200-s500-r`, `dynamixel-xm430-w350-t`, `dynamixel-xl330-m288-t`, `dynamixel-xl430-w250-t`, `dynamixel-xc430-w150-t`, `dynamixel-ph54-200-s500-r`, `dynamixel-pm54-060-s250-r`, `dynamixel-xl330-m077-t`, `dynamixel-xc430-w240-t`.

- **Protocol openness**: 79 (3 positive, 5 negative posts). yes: Packet format and control tables published[^9]
- **Languages and bindings**: 54 (3 positive, 55 negative posts). yes: Official SDK for C, C++ and Python[^10]; partly: Rust crate (community)[^11]
- **ROS 2 and sim**: 64 (7 positive, 29 negative posts). yes: Official ros2\_control hardware interface[^12]; yes: URDF for the maker's own arm[^13]; partly: MJCF model of a Dynamixel robot (third party)[^14]
- **Docs and examples**: 86 (2 positive, 11 negative posts). yes: English manual with control tables and examples[^9][^10]
- **Firmware and tooling**: 45 (1 positive, 11 negative posts). no: Firmware source published[^15]; yes: Config GUI with firmware update and recovery[^15]
- **Support and community**: 69 (1 positive, 0 negative posts). yes: Maker repository updated in the last 12 months[^12][^10]; partly: Median time to close recent issues: 19 days[^12][^10]
- **Comms reliability**: 82 (2 positive, 23 negative posts). yes: Sync and bulk read/write for multi-joint loops[^9]

Newest evidence:

- 2026-10-28, GitHub issues ROBOTIS-GIT/DynamixelSDK, Bindings, negative: Java JNA bindings declare several C return types with the wrong width, which can misread results. https://github.com/ROBOTIS-GIT/DynamixelSDK/issues/704
- 2026-10-28, GitHub issues Growbotics-AI/awesome-open-source-robotics, ROS 2 / sim, positive: A Dynamixel XL330 based hand is said to transfer easily from simulation to real hardware thanks to accurate position encoders. https://github.com/Growbotics-AI/awesome-open-source-robotics/issues/4
- 2026-10-25, GitHub issues Jizai-inc/palmimo-devkit, Bindings, negative: A Dynamixel bus wrapper treats the Protocol 2.0 alert bit as a failed write, so successful torque cuts are reported as errors. https://github.com/Jizai-inc/palmimo-devkit/issues/147
- 2026-10-22, GitHub issues huggingface/lerobot, Firmware, negative: LeRobot calibration of Dynamixel servos in reverse drive mode writes a homing offset with the wrong sign. https://github.com/huggingface/lerobot/issues/5060
- 2026-10-14, Reddit r/arduino, Bindings, negative: A custom on-device Dynamixel driver was written so a microcontroller talks to the bus without a PC. https://www.reddit.com/r/arduino/comments/1x5u34u/i_built_a_hand_exoskeleton_on_a_teensy_41_12/

### 4. Trinamic: 62

Ships: Python (official), Documented protocol (official). Recurring complaints: missing-bindings (25), missing-examples (7), docs-outdated (6). Catalog actuators: `trinamic-tmc4671`.

- **Protocol openness**: 87 (2 positive, 2 negative posts). yes: Register map and TMCL published[^16]
- **Languages and bindings**: 69 (3 positive, 72 negative posts). yes: Official Python library[^17]
- **ROS 2 and sim**: 12 (0 positive, 3 negative posts). no: ROS 2 driver[^17]
- **Docs and examples**: 79 (0 positive, 17 negative posts). yes: Datasheet and application notes in English[^16]
- **Firmware and tooling**: 83 (0 positive, 4 negative posts). yes: Evaluation and tuning IDE[^16]
- **Support and community**: 50 (0 positive, 2 negative posts). yes: Maker repository updated in the last 12 months[^17]; no: Median time to close recent issues: 120 days[^17]
- **Comms reliability**: 47 (0 positive, 3 negative posts)

Newest evidence:

- 2026-09-18, GitHub issues dresco/STM32H7xx, Comms, negative: The grblHAL TMC2209 UART receive path reports a comms failure even though the driver answers on the wire. https://github.com/dresco/STM32H7xx/issues/71
- 2026-07-28, GitHub issues Ultrawipf/OpenFFBoard, Firmware, negative: A firmware release may skip TMC4671 encoder auto alignment on cold boot, requiring manual calibration. https://github.com/Ultrawipf/OpenFFBoard/issues/191
- 2026-05-28, GitHub issues analogdevicesinc/PyTrinamic, Bindings, negative: PyTrinamic misnames the maximum current parameter for the TMCM-1316 and TMCM-1111, so the example current setter does nothing. https://github.com/analogdevicesinc/PyTrinamic/issues/137
- 2026-03-06, GitHub issues analogdevicesinc/TMC-EvalSystem, Bindings, negative: PyTrinamic cannot control a board on the small Landungsbruecke from cold start until the IDE forces a scan. https://github.com/analogdevicesinc/TMC-EvalSystem/issues/13
- 2026-03-06, GitHub issues analogdevicesinc/PyTrinamic, Bindings, negative: PyTrinamic cannot drive a TMC4671 eval kit until the Windows-only IDE has scanned the board first. https://github.com/analogdevicesinc/PyTrinamic/issues/136

### 5. VESC: 60

Ships: ROS 2 (community), Python (community), Open firmware (official), Documented protocol (official). Recurring complaints: config-tool (67), bricked-or-flashing-pain (10), bus-errors-timeouts (7). Catalog actuators: `trampa-vesc-6-mkvi`.

- **Protocol openness**: 84 (3 positive, 9 negative posts). yes: Protocol defined in open firmware[^18]
- **Languages and bindings**: 48 (0 positive, 14 negative posts). partly: Python package (community)[^19]
- **ROS 2 and sim**: 50 (3 positive, 6 negative posts). partly: ROS 2 driver (community)[^20]
- **Docs and examples**: 49 (0 positive, 10 negative posts). partly: Docs mostly in code and forum[^18]
- **Firmware and tooling**: 67 (6 positive, 123 negative posts). yes: Firmware source published (GPL)[^18]; yes: Open config tool (VESC Tool)[^21]
- **Support and community**: 90 (0 positive, 1 negative posts). yes: Maker repository updated in the last 12 months[^18][^21]; yes: Median time to close recent issues: 6 days[^18][^21]
- **Comms reliability**: 43 (0 positive, 8 negative posts)

Newest evidence:

- 2026-11-02, GitHub issues vedderb/bldc, Firmware, negative: On a Spintend Ubox with VESC firmware 7.00, the motor timeout fails to trigger after a LispBM script stops, so the motor keeps running. https://github.com/vedderb/bldc/issues/974
- 2026-10-31, GitHub issues vedderb/bldc, Firmware, negative: Community hardware configurations for Flipsky boards in the VESC firmware no longer match some hardware revisions. https://github.com/vedderb/bldc/issues/968
- 2026-10-30, GitHub issues Electrium-Mobility/Bakfiets-F26, Firmware, positive: VESC Tool reads the controller hardware name and firmware version directly once connected over USB. https://github.com/Electrium-Mobility/Bakfiets-F26/issues/38
- 2026-10-26, GitHub issues Autonomous-Robotics-Carleton/arc-monorepo, Firmware, negative: A failed or wrong VESC firmware flash on these controllers can only be recovered over SWD. https://github.com/Autonomous-Robotics-Carleton/arc-monorepo/issues/181
- 2026-10-24, GitHub issues iwysk/BLERobot, Firmware, negative: On VESC Express, the LispBM sleep mode wakes too briefly for VESC Tool to connect and the block sleep setting sometimes resets. https://github.com/iwysk/BLERobot/issues/3

### 6. Harmonic Drive: 56

Ships: Documented protocol (official). Catalog actuators: `harmonic-drive-lpa-20`, `harmonic-drive-fha-14c-100`, `harmonic-drive-sha-cg`, `harmonic-drive-cha-series`.

- **Protocol openness**: 90 (0 positive, 0 negative posts). yes: Standard EtherCAT drive profile[^22]
- **Languages and bindings**: 10 (0 positive, 0 negative posts). no: Maker libraries for Python or C++[^23]
- **ROS 2 and sim**: 10 (0 positive, 0 negative posts). no: ROS 2 driver from the maker[^23]
- **Docs and examples**: 90 (0 positive, 0 negative posts). yes: English product documentation[^23]
- **Firmware and tooling**: 90 (0 positive, 0 negative posts). yes: Commissioning software[^23]
- **Support and community**: no data
- **Comms reliability**: no data

No community posts matched yet.

### 7. maxon EPOS: 54

Ships: ROS 2 (community), Python (community), C++ (official), Documented protocol (official). Recurring complaints: bus-errors-timeouts (6), ros2-driver-bugs (4), missing-examples (2). Catalog actuators: none with a drive of this brand.

- **Protocol openness**: 88 (0 positive, 1 negative posts). yes: Standard CANopen and EtherCAT drive profiles[^24]
- **Languages and bindings**: 48 (0 positive, 9 negative posts). partly: Command library usable from Python via ctypes[^25]
- **ROS 2 and sim**: 47 (2 positive, 20 negative posts). partly: ROS 2 setup guide from the maker[^24]; partly: ros2\_control package (community)[^26]
- **Docs and examples**: 87 (0 positive, 3 negative posts). yes: English support articles and manuals[^25][^24]
- **Firmware and tooling**: 10 (0 positive, 0 negative posts). no: Firmware source published[^25]
- **Support and community**: no data
- **Comms reliability**: 45 (0 positive, 7 negative posts)

Newest evidence:

- 2026-01-22, GitHub issues ICube-Robotics/ethercat\_driver\_ros2, Comms, negative: After power cycling maxon EPOS4 EtherCAT drives, the master no longer detects any of them until it is restarted. https://github.com/ICube-Robotics/ethercat_driver_ros2/issues/209
- 2026-01-14, GitHub issues ros-industrial/ros2\_canopen, ROS 2 / sim, negative: Driving a maxon EPOS4 in CSP mode through ros2\_canopen and ros2\_control gives noisy, vibrating motion. https://github.com/ros-industrial/ros2_canopen/issues/405
- 2025-11-19, GitHub issues ICube-Robotics/ethercat\_driver\_ros2, ROS 2 / sim, negative: With an EtherCAT ROS 2 driver, a maxon EPOS4 in profile position mode never moves because actual position is echoed back as target. https://github.com/ICube-Robotics/ethercat_driver_ros2/issues/200
- 2025-09-22, GitHub issues ICube-Robotics/ethercat\_driver\_ros2, ROS 2 / sim, negative: A maxon EPOS4 driven in CSP mode through an EtherCAT ROS 2 driver moves the right way but vibrates. https://github.com/ICube-Robotics/ethercat_driver_ros2/issues/186
- 2025-07-10, GitHub issues Rick-v-E/epos\_hardware, Protocol, negative: A maxon EPOS4 library reads the serial number from an object index that differs from the one in the current firmware spec. https://github.com/Rick-v-E/epos_hardware/issues/1

### 8. Feetech: 53

Ships: Python (official), URDF (community), MJCF (community), Documented protocol (official). Recurring complaints: bus-errors-timeouts (17), ros2-driver-bugs (1), config-tool (1). Catalog actuators: `feetech-sts3250`, `feetech-sts3215`, `feetech-scs15`, `feetech-sts3215-c001`.

- **Protocol openness**: 87 (2 positive, 1 negative posts). yes: Packet protocol shipped with the official SDK[^27]
- **Languages and bindings**: 55 (2 positive, 25 negative posts). yes: Official Python SDK[^27]; partly: Packaged on PyPI (community)[^28]
- **ROS 2 and sim**: 50 (1 positive, 3 negative posts). no: ROS 2 driver from the maker[^27]; yes: URDF and MJCF of the SO-ARM100 arm[^29][^30]
- **Docs and examples**: 49 (0 positive, 2 negative posts). partly: English docs and examples[^27][^31]
- **Firmware and tooling**: 24 (6 positive, 4 negative posts). no: Firmware source published[^27]
- **Support and community**: 90 (0 positive, 0 negative posts). yes: Maker repository updated in the last 12 months[^27]
- **Comms reliability**: 31 (1 positive, 18 negative posts)

Newest evidence:

- 2026-10-31, GitHub issues platformio/platform-atmelavr, Bindings, negative: The SCServo library for Feetech servos works from the Arduino IDE but fails to talk to an STS3215 when built with PlatformIO. https://github.com/platformio/platform-atmelavr/issues/356
- 2026-10-26, GitHub issues ros-physical-ai/feetech\_ros2\_driver, ROS 2 / sim, negative: The Feetech ROS 2 driver sometimes leaves torque enabled on an STS3215 after a successful deactivate. https://github.com/ros-physical-ai/feetech_ros2_driver/issues/37
- 2026-10-25, Reddit r/ROS, ROS 2 / sim, positive: A community C++ ros2\_control hardware plugin drives real STS3215 arms with MoveIt 2 and Gazebo on ROS 2 Jazzy. https://www.reddit.com/r/ROS/comments/1xf5q3p/ros_2_stack_for_so101_arms/
- 2026-10-25, GitHub issues Adam-Software/Feetech-Servo-SDK, Bindings, negative: The Feetech servo Python SDK accepts read replies whose payload length differs from the request, returning wrong data as success. https://github.com/Adam-Software/Feetech-Servo-SDK/issues/5
- 2026-10-19, GitHub issues sima-neat/polima, Bindings, negative: The LeRobot Feetech motor bus pulls in torch on import, adding seconds of startup on small ARM boards. https://github.com/sima-neat/polima/issues/31

### 9. LKMTech: 50

Ships: Python (community), Documented protocol (official). Catalog actuators: `lkmtech-mg5010e-i36-v3`.

- **Protocol openness**: 90 (0 positive, 0 negative posts). yes: Maker CAN protocol PDF in circulation[^32]
- **Languages and bindings**: 50 (0 positive, 1 negative posts). partly: Python library (community)[^32]
- **ROS 2 and sim**: 10 (0 positive, 0 negative posts). no: ROS 2 driver[^32]
- **Docs and examples**: 10 (0 positive, 0 negative posts). no: English docs from the maker[^32]
- **Firmware and tooling**: 90 (0 positive, 0 negative posts). yes: Windows config tool from the maker[^32]
- **Support and community**: no data
- **Comms reliability**: no data

Newest evidence:

- 2026-10-04, GitHub issues XDU-IRobot/librm, Bindings, negative: The LK motor driver in a community C++ robotics library has shift overflow bugs when decoding multi-turn position. https://github.com/XDU-IRobot/librm/issues/57

### 10. Waveshare (Feetech OEM): 48

Ships: Python (official), C++ (official), Documented protocol (official). Recurring complaints: config-tool (3), jitter-dropouts (2), bricked-or-flashing-pain (2). Catalog actuators: `waveshare-st3215`, `waveshare-sc15`.

- **Protocol openness**: 90 (0 positive, 0 negative posts). yes: Servo protocol documented on the wiki[^33]
- **Languages and bindings**: 45 (0 positive, 7 negative posts). partly: Python and Arduino demos[^33]
- **ROS 2 and sim**: 16 (2 positive, 0 negative posts). no: ROS 2 driver from the maker[^33]
- **Docs and examples**: 79 (1 positive, 4 negative posts). yes: English wiki with demos[^33]
- **Firmware and tooling**: 12 (0 positive, 7 negative posts). no: Firmware source published[^33]
- **Support and community**: 50 (1 positive, 1 negative posts)
- **Comms reliability**: 47 (0 positive, 2 negative posts)

Newest evidence:

- 2026-09-15, GitHub issues alessiodam/python-st3215, Bindings, negative: The community Python library for these servos offers no clean way to read the per-response error byte without exceptions or log scraping. https://github.com/alessiodam/python-st3215/issues/12
- 2026-08-09, GitHub issues norma-core/norma-core, Comms, negative: An overloaded gripper servo causes bus lag and skipped frames, and the servo status bits flag the fault only after the loop has degraded. https://github.com/norma-core/norma-core/issues/101
- 2026-06-08, GitHub issues mneuhaus/waveshare-serial-servo-tui, Firmware, negative: A community serial servo TUI lists Waveshare ST3215 servos as unknown and its commands do not work reliably. https://github.com/mneuhaus/waveshare-serial-servo-tui/issues/1
- 2026-05-04, GitHub issues waveshareteam/ugv\_rpi, Bindings, negative: The servo library in Waveshare's UGV firmware has an empty flush function, so feedback reads fail on the half-duplex bus. https://github.com/waveshareteam/ugv_rpi/issues/27
- 2026-05-04, GitHub issues waveshareteam/ugv\_base\_general, Bindings, negative: The servo library in Waveshare's UGV base firmware has an empty flush function, so feedback reads fail on the half-duplex bus. https://github.com/waveshareteam/ugv_base_general/issues/4

### 11. Hiwonder: 47

Ships: Python (community), Rust (community), Documented protocol (official). Recurring complaints: config-tool (6), ros2-driver-bugs (6), bus-errors-timeouts (2). Catalog actuators: `hiwonder-lx-16a`.

- **Protocol openness**: 84 (2 positive, 3 negative posts). yes: Serial protocol in the user manual[^34]
- **Languages and bindings**: 48 (4 positive, 19 negative posts). partly: Python library (community)[^35]; partly: Rust crate (community)[^36]
- **ROS 2 and sim**: 12 (0 positive, 7 negative posts). no: ROS 2 driver[^35]
- **Docs and examples**: 85 (0 positive, 4 negative posts). yes: English user manual[^34]
- **Firmware and tooling**: 13 (0 positive, 9 negative posts). no: Firmware source published[^34]
- **Support and community**: no data
- **Comms reliability**: 41 (0 positive, 3 negative posts)

Newest evidence:

- 2026-10-26, GitHub issues ArendJan/mirte\_set\_serial\_servos, Protocol, negative: Newer Hiwonder bus servos need an explicit enable command before they move, unlike older units. https://github.com/ArendJan/mirte_set_serial_servos/issues/1
- 2026-10-19, GitHub issues yolo-jared/hiwonder-SoArm-101, Bindings, negative: A Hiwonder servo SDK in LeRobot reports only the last servo status in sync reads, hiding earlier read failures. https://github.com/yolo-jared/hiwonder-SoArm-101/issues/7
- 2026-10-19, GitHub issues yolo-jared/hiwonder-SoArm-101, Protocol, negative: The bus servo status packets carry no address or sequence number, so a late reply cannot be told apart from the real one. https://github.com/yolo-jared/hiwonder-SoArm-101/issues/6
- 2026-10-19, GitHub issues yolo-jared/hiwonder-SoArm-101, Bindings, negative: The Python SDK for the servos can still accept stale replies that arrive after the input buffer is reset. https://github.com/yolo-jared/hiwonder-SoArm-101/issues/6
- 2026-10-09, GitHub issues yolo-jared/hiwonder-SoArm-101, Bindings, negative: The community Python motor driver for Hiwonder servos has failing ping, error handling and sync read tests on its main branch. https://github.com/yolo-jared/hiwonder-SoArm-101/issues/4

### 12. RobStride: 47

Ships: ROS 2 (community), Python (official), C++ (community), Rust (community), Documented protocol (community). Recurring complaints: ros2-driver-bugs (7), bus-errors-timeouts (2), missing-bindings (2). Catalog actuators: `robstride-04`, `robstride-03`, `robstride-00`, `robstride-01`, `robstride-02`.

- **Protocol openness**: 52 (2 positive, 0 negative posts). partly: Private CAN protocol used by the maker's sample[^37]
- **Languages and bindings**: 59 (0 positive, 10 negative posts). yes: Official Python sample SDK[^37]; partly: C++ and Rust libraries (community)[^38]
- **ROS 2 and sim**: 44 (0 positive, 8 negative posts). partly: ROS 2 driver package (community)[^39]
- **Docs and examples**: 50 (0 positive, 1 negative posts). partly: Community library READMEs with an API reference[^38]
- **Firmware and tooling**: 12 (0 positive, 1 negative posts). no: Firmware source published[^37]
- **Support and community**: 90 (0 positive, 0 negative posts). yes: Maker repository updated in the last 12 months[^37]
- **Comms reliability**: 36 (0 positive, 3 negative posts)

Newest evidence:

- 2026-10-22, Reddit r/robotics, Comms, negative: A motion-control arm on RobStride joints in MIT mode shows persistent shake under load despite cogging and gravity compensation. https://www.reddit.com/r/robotics/comments/1xcfvfv/actuator_jitter_help/
- 2026-10-01, GitHub issues s2015-turtle/robstride\_ros2, ROS 2 / sim, negative: A community RobStride ROS 2 driver rejects valid boundary positions because of floating point roundoff after gear ratio conversion. https://github.com/s2015-turtle/robstride_ros2/issues/39
- 2026-10-01, GitHub issues s2015-turtle/robstride\_ros2, ROS 2 / sim, negative: On ROS 2 Humble, a community RobStride hardware interface rejects controller switches meant for other hardware components. https://github.com/s2015-turtle/robstride_ros2/issues/38
- 2026-09-07, GitHub issues s2015-turtle/robstride\_ros2, ROS 2 / sim, negative: A community RobStride ROS 2 driver can block shutdown and error handling indefinitely if a CAN publish stalls. https://github.com/s2015-turtle/robstride_ros2/issues/31
- 2026-09-07, GitHub issues s2015-turtle/robstride\_ros2, ROS 2 / sim, negative: A community RobStride ROS 2 driver can emit a clamped position target on activation when the joint starts outside its limits. https://github.com/s2015-turtle/robstride_ros2/issues/30

### 13. MyActuator: 42

Ships: ROS 2 (community), Python (community), C++ (community), Documented protocol (community). Recurring complaints: bus-errors-timeouts (5), bricked-or-flashing-pain (2), missing-bindings (2). Catalog actuators: `myactuator-rmd-x8-120`, `myactuator-rmd-x8-pro-v2`, `myactuator-rmd-x6-8`, `myactuator-rmd-l-9015`, `myactuator-rmd-x10-s2-v3`.

- **Protocol openness**: 51 (3 positive, 0 negative posts). partly: CAN protocol document used by the community SDK[^40]
- **Languages and bindings**: 44 (1 positive, 22 negative posts). partly: C++ SDK with Python bindings (community)[^40]
- **ROS 2 and sim**: 50 (1 positive, 1 negative posts). partly: ros2\_control integration (community)[^41]
- **Docs and examples**: 49 (0 positive, 1 negative posts). partly: Getting-started guide from a reseller[^42]
- **Firmware and tooling**: 13 (1 positive, 4 negative posts). no: Firmware source published[^40]
- **Support and community**: 50 (1 positive, 1 negative posts)
- **Comms reliability**: 42 (0 positive, 6 negative posts)

Newest evidence:

- 2026-10-09, GitHub issues SJSURoboticsTeam/urc-control-systems-2024, Comms, negative: With these motors on the CAN bus, other nodes intermittently failed to transmit because of a spurious extra ack. https://github.com/SJSURoboticsTeam/urc-control-systems-2024/issues/133
- 2026-02-06, GitHub issues 2b-t/myactuator\_rmd, Firmware, negative: The RMD X10 encoder zero changes after each power cycle and writing an offset seems to have no effect. https://github.com/2b-t/myactuator_rmd/issues/26
- 2025-12-12, GitHub issues 2b-t/myactuator\_rmd, Protocol, positive: MyActuator RH series motors use the same CAN protocol documentation as the RMD series. https://github.com/2b-t/myactuator_rmd/issues/25
- 2025-09-15, GitHub issues 2b-t/myactuator\_rmd, Bindings, negative: The RMD Python bindings set the CAN ID with a command that the X4-64 does not support. https://github.com/2b-t/myactuator_rmd/issues/24
- 2025-09-15, GitHub issues 2b-t/myactuator\_rmd, Protocol, positive: The official MyActuator V3 protocol document describes the correct command for setting the motor ID. https://github.com/2b-t/myactuator_rmd/issues/24

### 14. Unitree: 42

Ships: C++ (official), URDF (official), MJCF (official). Recurring complaints: missing-bindings (8), bus-errors-timeouts (6), sim-models (5). Catalog actuators: `unitree-m107`, `unitree-go-m8010-6`.

- **Protocol openness**: 15 (1 positive, 6 negative posts). no: Motor protocol wrapped in a closed library[^43]
- **Languages and bindings**: 71 (3 positive, 25 negative posts). yes: Official actuator SDK (C++)[^44]
- **ROS 2 and sim**: 75 (3 positive, 23 negative posts). yes: Official URDF models of its robots[^45]; yes: Official MuJoCo simulation[^46]
- **Docs and examples**: 47 (2 positive, 12 negative posts). partly: Developer docs for the motor SDK[^43]
- **Firmware and tooling**: 13 (0 positive, 7 negative posts). no: Firmware source published[^44]
- **Support and community**: 33 (1 positive, 3 negative posts). no: Maker repository updated in the last 12 months[^44]; partly: Median time to close recent issues: 31 days[^44]
- **Comms reliability**: 36 (0 positive, 9 negative posts)

Newest evidence:

- 2026-10-28, GitHub issues namanbansal013/unitree-openai-voice, Docs, positive: The vendor's own install steps for the Python SDK and its DDS dependency work on the robot's onboard Jetson. https://github.com/namanbansal013/unitree-openai-voice/issues/1
- 2026-10-23, GitHub issues unitreerobotics/unitree\_sdk2\_python, Docs, negative: The AS2 development guide does not document a lidar data interface for the Python SDK. https://github.com/unitreerobotics/unitree_sdk2_python/issues/193
- 2026-10-23, GitHub issues jsk-ros-pkg/g1\_ros, Bindings, negative: The hand DDS topic carries only motor states and no fingertip force, so a custom ros2\_control node talking to the hands is needed. https://github.com/jsk-ros-pkg/g1_ros/issues/49
- 2026-10-22, GitHub issues haianhltr/kitchenbot-ai, ROS 2 / sim, positive: The vendor publishes a permissively licensed 29-DoF G1 URDF that includes its own two-jaw gripper. https://github.com/haianhltr/kitchenbot-ai/issues/19
- 2026-10-21, Reddit r/singularity, Protocol, negative: The humanoid platform is proprietary, which blocked a team from seeing and changing what the robot runs. https://www.reddit.com/r/singularity/comments/1xbi26k/building_a_humanoid_for_agentic_robotics/

### 15. CubeMars: 39

Ships: Python (community), Rust (community), Documented protocol (official). Recurring complaints: docs-outdated (4), wrote-own-driver (3), bus-errors-timeouts (2). Catalog actuators: `cubemars-ak10-9`, `cubemars-ak70-10`, `cubemars-ak80-9`, `cubemars-ak80-6`, `cubemars-ak60-6`.

- **Protocol openness**: 86 (1 positive, 2 negative posts). yes: MIT and servo mode CAN frames described by the maker[^47]
- **Languages and bindings**: 43 (2 positive, 13 negative posts). partly: Python library (community)[^48]; partly: Rust crate (community)[^49]
- **ROS 2 and sim**: 10 (0 positive, 0 negative posts). no: ROS 2 driver from the maker[^47]
- **Docs and examples**: 41 (0 positive, 12 negative posts). partly: Maker tutorials with example code[^47]
- **Firmware and tooling**: 13 (0 positive, 5 negative posts). no: Firmware source published[^47]
- **Support and community**: 45 (0 positive, 1 negative posts)
- **Comms reliability**: 39 (0 positive, 2 negative posts)

Newest evidence:

- 2026-07-28, GitHub issues Uvic-Robotics-Club/uvic-rover-2027, Protocol, positive: The CubeMars AK45-36 has detailed CAN protocol documentation, unlike the other motor on the arm. https://github.com/Uvic-Robotics-Club/uvic-rover-2027/issues/31
- 2026-06-28, Reddit r/PLC, Bindings, negative: The builder controls the actuator over CAN from a Raspberry Pi with a Python interface they wrote themselves. https://www.reddit.com/r/PLC/comments/1uhxep1/building_the_next_generation_of_my_robot_arm_with/
- 2026-06-28, Reddit r/AskRobotics, Bindings, negative: The builder controls the actuator over CAN from a Raspberry Pi with a Python interface they wrote themselves. https://www.reddit.com/r/AskRobotics/comments/1uhxckn/building_the_next_generation_of_my_robot_arm_with/
- 2026-06-28, Reddit r/EngineeringPorn, Bindings, negative: The actuator is driven over CAN from a Raspberry Pi through a custom Python interface the builder wrote. https://www.reddit.com/r/EngineeringPorn/comments/1uhxk5p/robotic_actuator_controlled_via_raspberry_pi/
- 2026-06-12, Reddit r/AskElectronics, Comms, negative: Sending MIT-mode torque commands over CAN makes the controller go bus-off within seconds, likely due to no shared signal ground. https://www.reddit.com/r/AskElectronics/comments/1u4b1w6/how_do_i_make_sure_my_custom_motor_control/

### 16. DAMIAO: 37

Ships: ROS 2 (community), Python (community), C++ (community), URDF (community), Documented protocol (community). Recurring complaints: bus-errors-timeouts (5), calibration (2), missing-bindings (1). Catalog actuators: `damiao-dm-j8009-2ec`, `damiao-dm-j10010-2ec`, `damiao-dm-j4310-2ec`, `damiao-dm-j4340-2ec`, `damiao-dm-j6248p-2ec`, `damiao-dm-j4340p-2ec`.

- **Protocol openness**: 51 (2 positive, 1 negative posts). partly: CAN frames implemented in open libraries[^50][^51]
- **Languages and bindings**: 42 (1 positive, 15 negative posts). partly: C++ library from a robot maker using the motors[^50]; partly: Python libraries (community)[^51][^52]
- **ROS 2 and sim**: 50 (0 positive, 1 negative posts). partly: ros2\_control for an arm built on the motors[^53]; partly: URDF of an arm built on the motors (community)[^53]
- **Docs and examples**: 11 (0 positive, 1 negative posts). no: English docs from the maker[^51]
- **Firmware and tooling**: 12 (0 positive, 2 negative posts). no: Firmware source published[^51]
- **Support and community**: no data
- **Comms reliability**: 44 (2 positive, 5 negative posts)

Newest evidence:

- 2026-10-13, GitHub issues nexform-tech/litegrip-cpp, Bindings, negative: In a gripper library for a DM4310, the first status refresh after connecting never gets a reply and returns a default zero. https://github.com/nexform-tech/litegrip-cpp/issues/36
- 2026-10-10, GitHub issues nexform-tech/litearm-python, Protocol, negative: The DM4310 status frame encodes velocity coarsely and reports noisy nonzero values while the joint is still. https://github.com/nexform-tech/litearm-python/issues/20
- 2026-10-09, GitHub issues phamstered/rebotarm-executor, Bindings, negative: A community motor bridge used one MIT range for every DAMIAO model, which distorts torque on models with different ranges. https://github.com/phamstered/rebotarm-executor/issues/1
- 2026-10-06, GitHub issues huggingface/lerobot, Bindings, negative: The LeRobot driver for an arm built on these motors causes jerky motion during recording and lets the arm drop on disconnect. https://github.com/huggingface/lerobot/issues/4858
- 2026-09-28, GitHub issues motorbridge/motorbridge, Comms, positive: Two of these motors ran a 2 kHz MIT-mode loop over a native USB CAN backend with no dropped frames. https://github.com/motorbridge/motorbridge/issues/23

### 17. Steadywin: 33

Ships: ROS 2 (community), Python (community). Recurring complaints: calibration (2), ros2-driver-bugs (1), slow-support (1). Catalog actuators: `steadywin-gim6010-36`, `steadywin-gim8108-8`, `steadywin-gim6010-8`, `steadywin-gim8115-36`.

- **Protocol openness**: 11 (1 positive, 0 negative posts). no: Protocol published by the maker[^54]
- **Languages and bindings**: 50 (0 positive, 0 negative posts). partly: Works with ODrive tooling on some models[^55]
- **ROS 2 and sim**: 50 (0 positive, 1 negative posts). partly: ROS 2 through ros\_odrive on some models[^55]
- **Docs and examples**: 12 (0 positive, 2 negative posts). no: English manual available[^54]
- **Firmware and tooling**: 16 (1 positive, 4 negative posts). no: Firmware source published[^54]
- **Support and community**: 45 (0 positive, 1 negative posts)
- **Comms reliability**: no data

Newest evidence:

- 2026-05-08, Reddit r/robotics, Firmware, positive: The motors were quick and easy to set up and integrate into a pan tilt project. https://www.reddit.com/r/robotics/comments/1t7b618/pan_tilt_update/
- 2026-03-05, GitHub issues nguyen-v/omnibot\_ros2\_control, ROS 2 / sim, negative: The motors run fine over USB control but whine at high frequency in closed loop under a community ros2\_control interface. https://github.com/nguyen-v/omnibot_ros2_control/issues/1
- 2025-12-14, Reddit r/AskRobotics, Firmware, negative: The GIM6010-8 driver firmware appears to be closed source. https://www.reddit.com/r/AskRobotics/comments/1pmnkwb/question_for_gim60108_and_odrive_v36/
- 2025-12-14, Reddit r/AskRobotics, Support, negative: The maker has not been helpful when asked about controlling the GIM6010-8. https://www.reddit.com/r/AskRobotics/comments/1pmnkwb/question_for_gim60108_and_odrive_v36/
- 2025-09-13, GitHub issues open-rdc/Bipedal\_Robot\_Software, Firmware, negative: The GIM8108-8 ships with old ODrive firmware that does not match the current host tools or official docs, so it needs updating. https://github.com/open-rdc/Bipedal_Robot_Software/issues/12

### 18. Xiaomi CyberGear: 32

Ships: Python (community), C++ (community), Documented protocol (community). Recurring complaints: abandoned (1), docs-outdated (1), protocol-changes (1). Catalog actuators: `xiaomi-cybergear`.

- **Protocol openness**: 50 (1 positive, 1 negative posts). partly: Manual describes the CAN frames (English translation by community)[^56]
- **Languages and bindings**: 46 (0 positive, 9 negative posts). partly: Python library (community)[^57]; partly: ESP-IDF component (community)[^58]
- **ROS 2 and sim**: 12 (0 positive, 3 negative posts). no: ROS 2 driver[^57]
- **Docs and examples**: 12 (0 positive, 2 negative posts). no: English manual from the maker[^56]
- **Firmware and tooling**: 11 (0 positive, 1 negative posts). no: Firmware source published[^56]
- **Support and community**: 49 (0 positive, 1 negative posts)
- **Comms reliability**: no data

Newest evidence:

- 2026-05-30, GitHub issues DanielKalicki/Xiaomi\_CyberGear\_Arduino, Bindings, negative: The CyberGear Arduino library has a clamping bug that lets values above the maximum through. https://github.com/DanielKalicki/Xiaomi_CyberGear_Arduino/issues/7
- 2025-03-25, GitHub issues han-xudong/pyCyberGear, Bindings, negative: The example position-mode script of a Python CyberGear library fails with a byte range error over a USB-CAN adapter. https://github.com/han-xudong/pyCyberGear/issues/3
- 2025-03-11, GitHub issues pypi/support, Support, negative: The pycybergear package on PyPI was abandoned with no code ever published. https://github.com/pypi/support/issues/5878
- 2025-03-05, GitHub issues DanielKalicki/Xiaomi\_CyberGear\_Arduino, Bindings, negative: The CyberGear Arduino library fails to install in the Arduino IDE as an invalid library. https://github.com/DanielKalicki/Xiaomi_CyberGear_Arduino/issues/3
- 2025-02-13, GitHub issues han-xudong/pyCyberGear, Bindings, negative: Reading motor values with a CyberGear library over a USB to RS-485 link does not work. https://github.com/han-xudong/pyCyberGear/issues/2

### 19. ATAR Robot: 32

Ships: nothing public found. Catalog actuators: `atar-arc-cycloidal-joint`.

- **Protocol openness**: 50 (0 positive, 0 negative posts). partly: Standard EtherCAT or CANopen profile named[^59]
- **Languages and bindings**: 10 (0 positive, 0 negative posts). no: Any public library[^59]
- **ROS 2 and sim**: 10 (0 positive, 0 negative posts). no: ROS 2 driver[^59]
- **Docs and examples**: 50 (0 positive, 0 negative posts). partly: English product docs[^59]
- **Firmware and tooling**: 10 (0 positive, 0 negative posts). no: Firmware source published[^59]
- **Support and community**: no data
- **Comms reliability**: no data

No community posts matched yet.

### 20. INNFOS: 22

Ships: C++ (official). Recurring complaints: slow-support (2), abandoned (1). Catalog actuators: `innfos-sca-qdd-lite-ne30-36`.

- **Protocol openness**: 10 (0 positive, 0 negative posts). no: Protocol published by the maker[^60]
- **Languages and bindings**: 50 (0 positive, 0 negative posts). partly: C++ SDK inside the maker's arm controller[^60]
- **ROS 2 and sim**: 10 (0 positive, 0 negative posts). no: ROS 2 driver[^60]
- **Docs and examples**: 11 (0 positive, 1 negative posts). no: English docs[^60]
- **Firmware and tooling**: 10 (0 positive, 0 negative posts). no: Firmware source published[^60]
- **Support and community**: 12 (0 positive, 3 negative posts). no: Maker repository updated in the last 12 months[^60]
- **Comms reliability**: no data

Newest evidence:

- 2022-09-18, GitHub issues Rayckey/ActuatorController\_ROS, Docs, negative: The INNFOS actuator ROS node asks for a log tool setting script that is not explained anywhere. https://github.com/Rayckey/ActuatorController_ROS/issues/2
- 2019-12-20, Reddit r/robotics, Support, negative: Months of attempts to buy actuators ended with communication cut off twice after quoting. https://www.reddit.com/r/robotics/comments/ecy18r/m_innfos_technologies_does_anyone_know_this/fbh2j7e/
- 2019-12-20, Reddit r/robotics, Support, negative: The company replied that a lawsuit prevents it from selling anything. https://www.reddit.com/r/robotics/comments/ecy18r/m_innfos_technologies_does_anyone_know_this/fbh5ful/
- 2019-12-19, Reddit r/robotics, Support, negative: The company could not be reached by email or phone when trying to buy actuators. https://www.reddit.com/r/robotics/comments/ecy18r/m_innfos_technologies_does_anyone_know_this/

### 21. ENCOS: 20

Ships: nothing public found. Catalog actuators: `encos-ec-a6416-p2-25`, `encos-ec-a4315-p2-36`, `encos-ec-a4310-p2-36`, `encos-ec-a5013-h17-100`, `encos-ec-a3814-h14-107`.

- **Protocol openness**: 10 (0 positive, 0 negative posts). no: Protocol published[^61]
- **Languages and bindings**: 10 (0 positive, 0 negative posts). no: Any public library[^61]
- **ROS 2 and sim**: 10 (0 positive, 0 negative posts). no: ROS 2 driver[^61]
- **Docs and examples**: 10 (0 positive, 0 negative posts). no: English docs[^61]
- **Firmware and tooling**: 10 (0 positive, 0 negative posts). no: Firmware source published[^61]
- **Support and community**: no data
- **Comms reliability**: no data

No community posts matched yet.

## Not scored

- TQ RoboDrive: Frameless motor sold without a drive: the SDK is whichever controller you pair it with.
- Allied Motion: Frameless motor sold without a drive: the SDK is whichever controller you pair it with.
- iPower: Frameless motor sold without a drive: the SDK is whichever controller you pair it with.
- Nabtesco: Mechanical reducer: no electronics, so no SDK to score.
- Spinea: Mechanical reducer: no electronics, so no SDK to score.
- Leaderdrive: Mechanical reducer: no electronics, so no SDK to score.
- Nidec: Mechanical reducer: no electronics, so no SDK to score.

## Sources

[^1]: ODrive Robotics, "CAN Protocol (ODrive documentation)". https://docs.odriverobotics.com/v/latest/manual/can-protocol.html (accessed 2026-11-03).
[^2]: PyPI, "odrive package". https://pypi.org/project/odrive/ (accessed 2026-11-03).
[^3]: ODrive Robotics, "ODriveArduino library". https://github.com/odriverobotics/ODriveArduino (accessed 2026-11-03).
[^4]: ODrive Robotics, "ros\_odrive repository (ROS 2 node and ros2\_control)". https://github.com/odriverobotics/ros_odrive (accessed 2026-11-03).
[^5]: ODrive Robotics, "ODrive repository (open firmware for ODrive v3)". https://github.com/odriverobotics/ODrive (accessed 2026-11-03).
[^6]: mjbots, "moteus reference manual". https://github.com/mjbots/moteus/blob/main/docs/reference.md (accessed 2026-11-03).
[^7]: mjbots, "moteus repository (firmware, Python and C++ libraries, tview)". https://github.com/mjbots/moteus (accessed 2026-11-03).
[^8]: PyPI, "moteus package". https://pypi.org/project/moteus/ (accessed 2026-11-03).
[^9]: ROBOTIS, "DYNAMIXEL Protocol 2.0 (e-Manual)". https://emanual.robotis.com/docs/en/dxl/protocol2/ (accessed 2026-11-03).
[^10]: ROBOTIS, "DynamixelSDK repository". https://github.com/ROBOTIS-GIT/DynamixelSDK (accessed 2026-11-03).
[^11]: crates.io, "dynamixel2 crate (Rust, Protocol 2.0)". https://crates.io/crates/dynamixel2 (accessed 2026-11-03).
[^12]: ROBOTIS, "dynamixel\_hardware\_interface (ros2\_control)". https://github.com/ROBOTIS-GIT/dynamixel_hardware_interface (accessed 2026-11-03).
[^13]: ROBOTIS, "OpenMANIPULATOR-X specification and URDF (e-Manual)". https://emanual.robotis.com/docs/en/platform/openmanipulator_x/specification/ (accessed 2026-11-03).
[^14]: Google DeepMind, "MuJoCo Menagerie: ROBOTIS OP3". https://github.com/google-deepmind/mujoco_menagerie/tree/main/robotis_op3 (accessed 2026-11-03).
[^15]: ROBOTIS, "DYNAMIXEL Wizard 2.0 (e-Manual)". https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_wizard2/ (accessed 2026-11-03).
[^16]: Analog Devices, "TMC4671 product page and datasheet". https://www.analog.com/en/products/tmc4671.html (accessed 2026-11-03).
[^17]: Analog Devices, "PyTrinamic repository". https://github.com/analogdevicesinc/PyTrinamic (accessed 2026-11-03).
[^18]: VESC Project, "bldc firmware repository". https://github.com/vedderb/bldc (accessed 2026-11-03).
[^19]: PyPI, "pyvesc package (community)". https://pypi.org/project/pyvesc/ (accessed 2026-11-03).
[^20]: F1TENTH, "vesc ROS 2 driver (community)". https://github.com/f1tenth/vesc (accessed 2026-11-03).
[^21]: VESC Project, "VESC Tool repository". https://github.com/vedderb/vesc_tool (accessed 2026-11-03).
[^22]: EtherCAT Technology Group, "SHA rotary actuator with integrated servo drive". https://www.ethercat.org/en/products/C964F53A03D7411191AB43DDDEF93C22.htm (accessed 2026-11-03).
[^23]: Harmonic Drive LLC, "Integrated products brochure". https://www.harmonicdrive.net/media/3305/group-integrated-brochure-2.pdf (accessed 2026-11-03).
[^24]: maxon, "EPOS4 with ROS 2 (support article)". https://support.maxongroup.com/hc/en-us/articles/4414984147730 (accessed 2026-11-03).
[^25]: maxon, "EPOS Command Library from Python (support article)". https://support.maxongroup.com/hc/en-us/articles/360012695739 (accessed 2026-11-03).
[^26]: NOPLAB, "epos (ros2\_control for EPOS4, community)". https://github.com/NOPLAB/epos (accessed 2026-11-03).
[^27]: Feetech, "FTServo\_Python repository (scservo\_sdk)". https://github.com/ftservo/FTServo_Python (accessed 2026-11-03).
[^28]: PyPI, "feetech-servo-sdk package". https://pypi.org/project/feetech-servo-sdk/ (accessed 2026-11-03).
[^29]: The Robot Studio, "SO-ARM100 repository (URDF and simulation files)". https://github.com/TheRobotStudio/SO-ARM100 (accessed 2026-11-03).
[^30]: Google DeepMind, "MuJoCo Menagerie: SO-ARM100". https://github.com/google-deepmind/mujoco_menagerie/tree/main/trs_so_arm100 (accessed 2026-11-03).
[^31]: Hugging Face, "LeRobot Feetech motor bus". https://github.com/huggingface/lerobot/tree/main/src/lerobot/motors/feetech (accessed 2026-11-03).
[^32]: han-xudong, "pyLKMotor (community, ships the LK CAN protocol PDF)". https://github.com/han-xudong/pyLKMotor (accessed 2026-11-03).
[^33]: Waveshare, "ST3215 Servo wiki". https://www.waveshare.com/wiki/ST3215_Servo (accessed 2026-11-03).
[^34]: Hiwonder, "LX-16A serial bus servo user manual". https://cdn.robotshop.com/rbm/a5e9ab51-86bc-497b-adac-003de3088fb7/9/92896585-5e83-4c7c-a663-650b81e5978b/67e9729b_lx-16a-serial-bus-servo-user-manual.pdf (accessed 2026-11-03).
[^35]: ethanlipson, "PyLX-16A (community)". https://github.com/ethanlipson/PyLX-16A (accessed 2026-11-03).
[^36]: lib.rs, "lx16a-servo crate (Rust, community)". https://lib.rs/crates/lx16a-servo (accessed 2026-11-03).
[^37]: RobStride, "RobStride Python\_Sample repository". https://github.com/RobStride/Python_Sample (accessed 2026-11-03).
[^38]: tianrking, "RobStride\_Control (Python, C++, Rust, Arduino; community)". https://github.com/tianrking/RobStride_Control (accessed 2026-11-03).
[^39]: ROS Index, "robstride\_driver package". https://index.ros.org/p/robstride_driver/ (accessed 2026-11-03).
[^40]: Tobit Flatscher, "myactuator\_rmd (C++ SDK with Python bindings, community)". https://github.com/2b-t/myactuator_rmd (accessed 2026-11-03).
[^41]: Tobit Flatscher, "myactuator\_rmd\_ros (ros2\_control, community)". https://github.com/2b-t/myactuator_rmd_ros (accessed 2026-11-03).
[^42]: Seeed Studio, "MyActuator X series getting started". https://wiki.seeedstudio.com/myactuator_series/ (accessed 2026-11-03).
[^43]: Unitree, "Unitree open source page". https://www.unitree.com/mobile/opensource (accessed 2026-11-03).
[^44]: Unitree, "unitree\_actuator\_sdk repository". https://github.com/unitreerobotics/unitree_actuator_sdk (accessed 2026-11-03).
[^45]: Unitree, "unitree\_ros repository (URDF)". https://github.com/unitreerobotics/unitree_ros (accessed 2026-11-03).
[^46]: Unitree, "unitree\_mujoco repository". https://github.com/unitreerobotics/unitree_mujoco (accessed 2026-11-03).
[^47]: CubeMars, "Control a CubeMars AK motor with Arduino (MIT mode over CAN)". https://www.cubemars.com/de/control-cubemars-ak45-36-motor-with-arduino.html (accessed 2026-11-03).
[^48]: Neurobionics Lab, "TMotorCANControl (Python, community)". https://github.com/neurobionics/TMotorCANControl (accessed 2026-11-03).
[^49]: docs.rs, "kcan crate (Rust, AK series MIT frames)". https://docs.rs/crate/kcan/latest (accessed 2026-11-03).
[^50]: Enactic, "openarm\_can (DAMIAO CAN library for OpenArm)". https://github.com/enactic/openarm_can (accessed 2026-11-03).
[^51]: cmjang, "DM\_Control\_Python (community)". https://github.com/cmjang/DM_Control_Python (accessed 2026-11-03).
[^52]: PyPI, "pydamiao package". https://pypi.org/project/pydamiao/ (accessed 2026-11-03).
[^53]: Enactic, "openarm\_ros2 (ros2\_control for DAMIAO motors)". https://github.com/enactic/openarm_ros2 (accessed 2026-11-03).
[^54]: SimpleFOC Community, "Steadywin new cheap gear motor (thread)". https://community.simplefoc.com/t/steadywin-new-cheap-gear-motor/4509 (accessed 2026-11-03).
[^55]: Zenn, "Driving a Steadywin GIM8108-8 from ROS 2 through ODrive-compatible firmware". https://zenn.dev/nexis_r/articles/4697e25ca87c76 (accessed 2026-11-03).
[^56]: belovictor, "CyberGear instruction manual, English translation (community)". https://github.com/belovictor/cybergear-docs/blob/main/instructionmanual/instructionmanual.md (accessed 2026-11-03).
[^57]: blanck, "cybergear (pycybergear, community)". https://github.com/blanck/cybergear (accessed 2026-11-03).
[^58]: Espressif Component Registry, "cybergear-robotics/cybergear ESP-IDF component". https://components.espressif.com/components/cybergear-robotics/cybergear (accessed 2026-11-03).
[^59]: ATAR Robot, "ARC cycloidal joint actuators". https://www.atarrobot.com/cycloidal-robot/arc-serie/Arc-cycloidal-joint-actuators.html (accessed 2026-11-03).
[^60]: Mintasca (INNFOS), "innfos-gluon-controller repository". https://github.com/mintasca/innfos-gluon-controller (accessed 2026-11-03).
[^61]: AIFitLab, "ENCOS EC-A4310-P2-36 product listing". https://aifitlab.com/collections/encos-motor/products/encos-ec-a4310-p2-36-motor (accessed 2026-11-03).
