
TurtleBot3 Burger
Evidence: the full gate report →
ROBOTIS's small research-and-teaching rover: two driven wheels, a caster, and a 360-degree lidar. RobotForge's reference robot for the differential-drive layout — its spec here uses the public ROBOTIS reference dimensions.
Spec
| Battery | LiPo 11.1 V, 1800 mAh |
|---|---|
| Drivetrain | differential — 2 driven wheels + caster |
| Footprint | 0.178 m x 0.138 m, 0.192 m tall |
| Mass | 0.93 kg (reference spec) |
| Sensors | 360-degree 2D lidar (top) |
| Wheels | 66 mm diameter |
examples/turtlebot3-burger.jsonThe Waffle Pi URDF was pulled from this repo by `robotforge lookup` (chunk #4) with its LICENSE and a blob-SHA manifest; the Burger reference spec uses the public dimensions stated in examples/turtlebot3-burger.json.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
Measured against simulator ground truth at the locked thresholds: pass ≤ 5% / 5°, fail over 10% / 10°. The gate tests the spec's simulated twin, not a physical robot.
| Run | Drive vs truth | Turn vs truth | Odometry distance | Odometry heading |
|---|---|---|---|---|
| Run 1 | 0.368% | — | 0.042% | — |
| Run 2 | 0.968% | 2.028° | 0.042% | — |
| Run 3 | 2.293% | 1.421° | 0.042% | 2.636° |
- Run 1: P1 launch verification on scythe from a fresh clone of main, 2026-10-26 (project record: 'burger clean GATE PASS, drive 0.368%, odometry honest 0.042%')
- Run 2: Evidence run embedded in reports.html (burger-clean): drive 0.968%, turn 2.028 deg, all four checks PASS
- Run 3: Gate run on Torque's VM, 2026-10-28 — Gazebo Sim (Harmonic) with the gz-sim server embedded in-process, because the VM sandbox blocks the UDP transport the gate normally discovers over; verdict logic, thresholds and spec untouched. Full gate report: catalog/gate-runs/burger-torque-inprocess.json · full gate report (JSON)
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.
0 checked clean · 0 with warnings · 0 with errors · 0 partial · 19 not checked · missing data: cable.gauge_awg ×8, connector at both ends (connector_from / connector_to) ×6, current_a for lidar ×5
Check-by-check counts and missing data
| Check | Checked | Partial | Not checked |
|---|---|---|---|
| voltage drop | 0 | 0 | 4 |
| ampacity | 0 | 0 | 4 |
| logic levels | 0 | 0 | 2 |
| rail budget | 0 | 0 | 3 |
| connector match | 0 | 0 | 6 |
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 input | Blocks | Needed by |
|---|---|---|
cable.gauge_awg | 8 | battery -> driver, driver -> motors, battery -> controller, controller -> lidar |
connector at both ends (connector_from / connector_to) | 6 | battery -> driver, driver -> motors, battery -> controller, controller -> driver … |
current_a for lidar | 5 | battery -> controller, controller -> lidar, controller rail |
current_a for motors | 5 | battery -> driver, driver -> motors, driver rail |
cable.length_mm | 4 | battery -> driver, driver -> motors, battery -> controller, controller -> lidar |
connection voltage (volts) | 2 | battery -> controller, controller -> lidar |
logic_v for controller | 2 | controller -> driver, controller -> lidar |
current_a for controller | 1 | battery rail |
current_a for driver | 1 | battery rail |
logic_v for driver | 1 | controller -> driver |
logic_v for lidar | 1 | controller -> lidar |
rated output current for battery | 1 | battery rail |
rated output current for controller | 1 | controller rail |
rated output current for driver | 1 | driver rail |
Report: catalog/harness-reports/turtlebot3-burger.json · checked 2026-10-26 · reproduce with robotforge harness examples/turtlebot3-burger.json
Take it apart
Every spec becomes a kit of simple, 3D-printable parts (robotforge cad). This viewer lays the kit out the way the kit's own assembly file does, straight from the spec's numbers — flat views, or in 3D with the toggle. Click any part.
examples/turtlebot3-burger.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.
Chassis plate ×1
parts/chassis_plate.scadThe deck everything else bolts to.
178 x 138 mm footprint, 4 mm thick
| Parameter | Value | Where the number comes from |
|---|---|---|
chassis_length_mm | 178 mm | from spec length_m |
chassis_width_mm | 138 mm | from spec width_m |
plate_thickness_mm | 4 mm | assumption — not in the spec |
corner_radius_mm | 6 mm | assumption — not in the spec |
mount_hole_diameter_mm | 3.4 mm | assumption — M3 bolt clearance |
mount_hole_inset_mm | 12 mm | assumption — not in the spec |
Print note: Print flat as modeled. Suggestion: 3-4 walls, ~25% infill.
Wheel ×2
parts/wheel.scadRolls on the ground; one per wheel position on the robot.
66 mm diameter x 22 mm wide, 6 mm shaft hole
| Parameter | Value | Where the number comes from |
|---|---|---|
wheel_diameter_mm | 66 mm | from spec wheel.diameter_m |
wheel_width_mm | 22 mm | from spec wheel.width_m |
shaft_diameter_mm | 6 mm | assumption — typical DC gearmotor shaft; measure yours |
hub_diameter_mm | 26.4 mm | derived — 0.4 x wheel diameter, for looks/strength |
lightening_hole_diameter_mm | 7.9 mm | derived — decorative; delete the loop below for a solid wheel |
Print note: Print flat as modeled. Suggestion: print one first and check the shaft fit before printing the rest.
Motor mount ×2
parts/motor_mount.scadSide plate that holds one drive motor so its shaft lines up with a wheel's axle.
38 mm wide plate, shaft hole at axle height 33 mm
| Parameter | Value | Where the number comes from |
|---|---|---|
shaft_center_height_mm | 33 mm | from spec wheel radius (diameter_m / 2) — the axle height above ground |
mount_width_mm | 38 mm | derived — wheel width + 16 mm of plate around the motor |
mount_height_mm | 44 mm | derived — reaches from the ground past the axle to the chassis plate |
mount_thickness_mm | 4 mm | assumption — not in the spec |
shaft_hole_diameter_mm | 6.4 mm | derived — shaft diameter + 0.4 mm slip fit |
flange_depth_mm | 16 mm | assumption — how far the bolting flange reaches under the chassis |
flange_hole_diameter_mm | 3.4 mm | assumption — M3 bolt clearance |
Print note: Suggestion: 40% infill — this part takes the motor's twist. The motor itself is not a printed part.
Caster ×2
parts/caster.scadBall caster that keeps a two-wheel robot level (one front, one rear). Placeholder for a real ball-caster unit.
ball diameter 20 mm (= ground clearance, so the ball tops out at the deck)
| Parameter | Value | Where the number comes from |
|---|---|---|
caster_ball_diameter_mm | 20 mm | from spec ground_clearance_m — ball top meets the deck underside |
caster_stem_height_mm | 10 mm | derived — reaches into/past the deck plate for bolting |
caster_stem_diameter_mm | 10 mm | derived — half the ball diameter |
Print note: Suggestion: expect a loose fit — sand or scale 1-2% for a snug cup. A bought ball caster rolls far better.
Lidar mount ×1
parts/lidar_mount.scadPost that raises the 2D lidar to the top of the robot so its scan plane clears the chassis.
post 182 mm tall, top disc 70 mm diameter
| Parameter | Value | Where the number comes from |
|---|---|---|
post_height_mm | 182 mm | derived — spec height minus deck and disc thicknesses |
post_diameter_mm | 12 mm | assumption — not in the spec |
lidar_disc_diameter_mm | 70 mm | assumption — typical 2D lidar puck; measure yours |
disc_thickness_mm | 3 mm | assumption — not in the spec |
Print note: Print upright as modeled. Suggestion: ~25% infill; the lidar itself is not a printed part.
Reproduce it
Run these from a clone of the repository.
robotforge validate examples/turtlebot3-burger.json
robotforge urdf examples/turtlebot3-burger.json --out build/turtlebot3-burger.urdf
robotforge cad examples/turtlebot3-burger.json
robotforge run-gate examples/turtlebot3-burger.json
robotforge harness examples/turtlebot3-burger.json