GitHub
ROBOTIS OP3 (official image)
Photo: ROBOTIS — the OP3 on the official e-Manual
#010

ROBOTIS OP3

Legged · Humanoid
Legged humanoid
Not gatedStatic check: UNSTABLE — tip margin 3°Harness checks: 2 clean · 0 warn · 0 err · 7 not checked

ROBOTIS's open humanoid research platform — the robot that plays in RoboCup demos: twenty Dynamixel servos on one daisy-chained bus, an OpenCR board running them, and a small PC for a brain. Half a metre tall, fully documented in the ROBOTIS e-Manual.

Spec

Actuators20× XM430-W350-R Dynamixel servos — legs 6 each, arms 3 each, head 2
BatteryLiPo 3-cell, 11.1 V, 3300 mAh (current e-Manual; earlier ROBOTIS pages list 1800 mAh)
ComputingIntel NUC (i3) + OpenCR sub-controller; Logitech C920 camera
FootprintESTIMATED — ROBOTIS does not publish a standing footprint; the spec's 0.20 × 0.13 m is an estimate and is labeled as one
Height~510 mm (e-Manual, including the head camera)
Stall torque3.8 N·m at 11.1 V (XM430-W350 e-Manual page; documented input 10.0–14.8 V)
Weight~3.5 kg without the skin cover (e-Manual)
Source: ROBOTIS e-Manual — OP3 introduction + XM430-W350 specification · linkLicense: Apache-2.0 (ROBOTIS-GIT/ROBOTIS-OP3)Spec file: examples/robotis-op3.jsonHeight, weight, DOF, actuator model and battery from the ROBOTIS e-Manual OP3 introduction (the current e-Manual lists a 3300 mAh battery; older ROBOTIS material says 1800 mAh — the current figure is used and the change is noted). Stall torque and voltage range from the e-Manual's XM430-W350 page. The DOF split (legs 6 each, arms 3 each, head 2) is the e-Manual's 20-DOF layout as also published in RoboCup materials. ROBOTIS publishes no standing footprint: the spec's length and width are ESTIMATED from the robot's proportions and are labeled ESTIMATED everywhere they appear.

Imported specimen

Imported specimen — source: robot_descriptions (upstream: deepmind/mujoco_menagerie), license: Apache-2.0, imported 2026-10-29.

Bodies21 (21 with inertial data)
Joints21 (1 free, 20 hinge)
Actuators20
Degrees of freedom20
Total mass (description inertials)3.14747 kg
Root body mass1.34928 kg

Parsed from the MJCF at the pinned upstream commit: body/inertial elements under <worldbody>, joint elements (the <default> class stub excluded), the root body's <freejoint/> and the <actuator> list. Full record: catalog/specimens/robotis-op3.json (upstream MJCF robotis_op3/op3.xml at commit feadf76d, via robot_descriptions 3.3.0 (Python package), module robot_descriptions.op3_mj_description).

An import is provenance, not a verdict: this entry stays Not gated, and no parts kit is defined for it.

GateA pass/fail test in the Gazebo simulator: the twin drives 1 m, turns 90° and stops, and the result is measured against where it really went. runs

The motion gate covers ground robots today. This class has no gate yet, so there is no verdict to show — the note below says why, in the entry's own words.

No recorded gate runs yet. This robot has no verdict until one is measured.

Not gated. The motion gate drives ground robots on wheels and grades drive/turn error; a walking gate for legged robots does not exist yet, so this entry carries no verdict — its spec is validated, and that is all that is claimed.

Static stability check

A computation from this robot's spec — support-polygon statics, not a simulation run and not a gate verdict. It grades how far the robot can tip before its centre of mass passes over its feet. The gate status above is unchanged by it: this robot is still not gated.

Static check: UNSTABLE — tip margin 3°
GradeUNSTABLE
Static tip-over angle (weakest direction)2.7° — backward
Weakest tip margin13 mm from the centre-of-mass projection to the support-polygon edge
Margin as share of the body's half-extent20%
Centre-of-mass height0.281 m — ASSUMED at 55% of standing height (printed in the report's assumptions, never buried)
Thresholds (v1, printed on the report)tip angle ≥ 20° STABLE · 10–20° MARGINAL · < 10° UNSTABLE

Report: catalog/stability-reports/robotis-op3.json · checked 2026-10-26 · reproduce with robotforge stability examples/robotis-op3.json

How it was computed

Support-polygon statics from the spec's declared dimensions: convex hull of the foot contacts, weakest-direction distance from the centre-of-mass projection to a polygon edge, tip-over angle atan(margin / CoM height). No simulation, no motion — a computation, not a gate run.

Support model: Two feet in double support, each a rectangle 0.059 × 0.026 m (length 0.115 × standing height, width 0.05 × height), centred 0.032 × height ahead of the ankle line at ±0.22 × body width — the take-apart viewer's proportions; the spec publishes no foot dimensions.

DirectionMarginTip angle
to the right57 mm11.4°
forward46 mm9.2°
to the left57 mm11.4°
backward13 mm2.7°

Assumptions (all of them, as printed in the report):

  • Foot size is derived from standing height with the viewer's proportions; it is not a published dimension.
  • Double support: both feet flat on the ground. A humanoid in single support, or mid-step, is a dynamics problem this check does not model.
  • Centre of mass sits horizontally at the centre of the body footprint.
  • CoM height is ASSUMED at 55% of standing height — the spec declares no CoM height.
  • Flat, level ground; rigid body; no payload.

HarnessThe robot’s wiring. The harness check adds up current on each power rail and flags wires that are too thin or rails that are overloaded. checks

Electrical checks over this robot's documented wiring. Not a simulation; the headline is counts, never a blanket pass.

Harness checks: 2 clean · 0 warn · 0 err · 7 not checked

2 checked clean · 0 with warnings · 0 with errors · 1 partial · 7 not checked · missing data: current_a for motors ×5, cable.gauge_awg ×4, cable.length_mm ×2

Check-by-check counts and missing data
CheckCheckedPartialNot checked
voltage drop002
ampacity002
logic levels001
rail budget011
connector match201

Findings: none — the inputs that could be checked raised nothing. That is not the same as everything being checked; the counts above say how much was.

Missing data — the datasheets still to hunt. A check that could not run says what it needs:

Missing inputBlocksNeeded by
current_a for motors5battery -> opencr, opencr -> motors, opencr rail
cable.gauge_awg4battery -> opencr, opencr -> motors
cable.length_mm2battery -> opencr, opencr -> motors
connector at both ends (connector_from / connector_to)1battery -> opencr
current_a for opencr1battery rail
logic_v for motors1opencr -> motors
logic_v for opencr1opencr -> motors
rated output current for battery1battery rail

Report: catalog/harness-reports/robotis-op3.json · checked 2026-10-27 · reproduce with robotforge harness examples/robotis-op3.json

Take it apart

This viewer derives a schematic take-apart straight from the spec's numbers — the same one-derivation rule as the ground kits — flat views, or in 3D with the toggle. It is a schematic of the real robot's layout, not a printable kit: robotforge cad kits cover ground robots only today. Click any part.

Loading examples/robotis-op3.json…

Parts kit

The take-apart kit robotforge cad generates from this robot's spec: every part the generator defines, what it does, and the parameters worth tweaking with the values this robot's kit ships with. Each parameter carries the generator's own source label — from spec numbers come out of the spec, derived numbers are computed from them, and assumption numbers are typical values the spec does not carry.

No take-apart kit is defined for this robot yet — the kit generator builds kits for wheeled ground robots from the spec's wheel block, and this spec has no wheels.

Reproduce it

Run these from a clone of the repository. The twin, CAD kit and motion gate (urdf / cad / run-gate) cover ground robots today, so they are not listed here.

robotforge validate examples/robotis-op3.json
robotforge stability examples/robotis-op3.json
robotforge catalog robot 10
robotforge harness examples/robotis-op3.json