GitHub
Pathfinder (AI concept illustration)
AI concept illustration (muse-image-1.0). Pathfinder is a RobotForge design, not built hardware; no photo of it exists.
#004

Pathfinder

Ground — wheeled · Skid-steer rover
Skid-steer ground rover
PassHarness checks: 0 clean · 0 warn · 0 err · 21 not checkedLatest recorded run: drive 1.375% · turn 2.205° vs ground truth

Evidence: the recorded runs and their sources ↓

RobotForge's own demo robot — an original design, not a copy of anything: a four-wheel skid-steer rover for warehouse aisle patrol, described in one plain paragraph and built entirely by the forge. Entry #004 is ours.

Spec

BatteryLiPo 14.8 V (4S), 5200 mAh
Drivetrainskid-steer — 4 driven wheels
Footprint0.42 m x 0.31 m, 0.18 m tall
Mass3.4 kg
Motors4x 12 V DC gearmotors
Sensorsultrasonic ranger (front), IMU (centre)
Wheels100 mm diameter x4
Source: Original design in this repository · linkLicense: Apache-2.0Spec file: examples/pathfinder.jsonRobotForge's in-repo reference design (examples/pathfinder.json), authored for the hackathon demo.

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.

RunDrive vs truthTurn vs truthOdometry distanceOdometry heading
Run 11.500%4.770°——
Run 21.375%2.205°——
  • Run 1: Gate verification on scythe, 2026-10-26 (bindings transport, locked thresholds)
  • Run 2: Gate verification on scythe, 2026-10-26 (repeat run)
Two recorded PASS runs at the locked thresholds (drive <=5%, heading <=5 deg).

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: 0 clean · 0 warn · 0 err · 21 not checked

0 checked clean · 0 with warnings · 0 with errors · 0 partial · 21 not checked · missing data: cable.gauge_awg ×8, connector at both ends (connector_from / connector_to) ×7, current_a for motors ×5

Check-by-check counts and missing data
CheckCheckedPartialNot checked
voltage drop004
ampacity004
logic levels003
rail budget003
connector match007

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
cable.gauge_awg8battery -> driver, driver -> motors, battery -> controller, controller -> ultrasonic
connector at both ends (connector_from / connector_to)7battery -> driver, driver -> motors, battery -> controller, controller -> driver …
current_a for motors5battery -> driver, driver -> motors, driver rail
current_a for ultrasonic5battery -> controller, controller -> ultrasonic, controller rail
cable.length_mm4battery -> driver, driver -> motors, battery -> controller, controller -> ultrasonic
logic_v for controller3controller -> driver, controller -> ultrasonic, controller -> imu
connection voltage (volts)2driver -> motors, battery -> controller
current_a for controller1battery rail
current_a for driver1battery rail
logic_v for driver1controller -> driver
logic_v for imu1controller -> imu
rated output current for battery1battery rail
rated output current for controller1controller rail
rated output current for driver1driver rail

Report: catalog/harness-reports/pathfinder.json · checked 2026-10-27 · reproduce with robotforge harness examples/pathfinder.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.

Loading examples/pathfinder.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.scad

The deck everything else bolts to.

420 x 310 mm footprint, 4 mm thick

ParameterValueWhere the number comes from
chassis_length_mm420 mmfrom spec length_m
chassis_width_mm310 mmfrom spec width_m
plate_thickness_mm4 mmassumption — not in the spec
corner_radius_mm6 mmassumption — not in the spec
mount_hole_diameter_mm3.4 mmassumption — M3 bolt clearance
mount_hole_inset_mm12 mmassumption — not in the spec

Print note: Print flat as modeled. Suggestion: 3-4 walls, ~25% infill.

Wheel ×4

parts/wheel.scad

Rolls on the ground; one per wheel position on the robot.

100 mm diameter x 32 mm wide, 6 mm shaft hole

ParameterValueWhere the number comes from
wheel_diameter_mm100 mmfrom spec wheel.diameter_m
wheel_width_mm32 mmfrom spec wheel.width_m
shaft_diameter_mm6 mmassumption — typical DC gearmotor shaft; measure yours
hub_diameter_mm40 mmderived — 0.4 x wheel diameter, for looks/strength
lightening_hole_diameter_mm12 mmderived — 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 ×4

parts/motor_mount.scad

Side plate that holds one drive motor so its shaft lines up with a wheel's axle.

48 mm wide plate, shaft hole at axle height 50 mm

ParameterValueWhere the number comes from
shaft_center_height_mm50 mmfrom spec wheel radius (diameter_m / 2) — the axle height above ground
mount_width_mm48 mmderived — wheel width + 16 mm of plate around the motor
mount_height_mm61 mmderived — reaches from the ground past the axle to the chassis plate
mount_thickness_mm4 mmassumption — not in the spec
shaft_hole_diameter_mm6.4 mmderived — shaft diameter + 0.4 mm slip fit
flange_depth_mm16 mmassumption — how far the bolting flange reaches under the chassis
flange_hole_diameter_mm3.4 mmassumption — M3 bolt clearance

Print note: Suggestion: 40% infill — this part takes the motor's twist. The motor itself is not a printed part.

Ultrasonic bracket ×1

parts/ultrasonic_bracket.scad

Front mount carrying the ultrasonic sensor's two round 'eyes' (HC-SR04 style).

twin 16 mm cans, 26 mm apart

ParameterValueWhere the number comes from
plate_width_mm52 mmassumption — HC-SR04 module class; not in the spec
plate_height_mm20 mmassumption — not in the spec
plate_thickness_mm3 mmassumption — not in the spec
transducer_diameter_mm16 mmassumption — HC-SR04 can; measure yours
transducer_spacing_mm26 mmassumption — HC-SR04 can spacing
transducer_length_mm12 mmassumption — how far the cans stick out

Print note: Print flat as modeled. Suggestion: the cans are visual placeholders for a real ultrasonic module.

Reproduce it

Run these from a clone of the repository.

robotforge validate examples/pathfinder.json
robotforge urdf examples/pathfinder.json --out build/pathfinder.urdf
robotforge cad examples/pathfinder.json
robotforge run-gate examples/pathfinder.json
robotforge harness examples/pathfinder.json