← Design notebook

BUILT BY AUTONOMOUS SYSTEMS · WORK IN PROGRESS

Body hazard table: what can hurt a child, and what the design does about it

The body's hazards (milestone M5), carried from docs/body-plan.md section 1.7 into the CAD and the wiring as built (cad/body_*.py, exports/body/, docs/body-electrical.md). Each row says where the measure lives and how it is checked. Rules used, as the plan: ISO 13854 (a crushing gap is safe at ≥ 25 mm for fingers, ≥ 100 mm for hands), ISO 13857 (an opening ≤ 4 mm admits no finger; a slot ≤ 8 mm admits a fingertip only, safe when the hazard is ≥ 15 mm behind it), touch temperatures 48 °C on metal and 60 °C on plastic, SELV below 60 V DC. Written 2026-10-27.

Status: in the CAD (built into a part, checked by cad/test_body.py or the clash sweep), in the wiring (docs/body-electrical.md), P3 (the shell and guards, task T7), procedure (a rule for whoever runs the robot), test (measured on the prototype, with the pass number).

1. Moving parts

# Hazard Where Measure Status
1 Shear between the knee's eye boss and the body each upper link's knee eye sweeps past the belly at |y| ≥ 83 mm, z +31 to -169 the belly plate is 116 wide (|y| ≤ 58), not the plan's 160: the gap is ≥ 25 mm everywhere in the leg's range (it was 3 mm) in the CAD (BELLY_HALF_Y); the clash sweep's nearest-distance list in exports/body/body.json
2 Shear between the battery bay and the knees the bay's sides at |y| ≤ 42.8 40 mm to the knee eyes at the lowest stance in the CAD (cad/body_battery.py summary)
3 Pinch between the upper links and the cheeks, tray, posts, shell or tub the links turn beside the body no body part within 25 mm of a moving leg part, or ≤ 4 mm with a fixed guard; the P3 shell's walls keep 46 mm (nothing of the legs rises above z +31); the tub's end caps are 97.6 mm wide so the knee pins keep 29.8 mm in the CAD: the clash sweep with the shell and tub on (clash_sweep: 22 stances, 0 clashes, nearest 25.06 mm) and its shell_gaps list (no shell part between 4 and 25 mm of a moving part), checked by cad/test_body.py
4 The leg's own pinch points: knee scissor, the lower-link V, stop posts, wheel against its link the legs people-near mode first; the knees close no tighter than 24.9° inside the stops, so a TPU 95A wedge 58 mm long on each upper link keeps the scissor ≥ 25 mm; the apex V closes to 29.1° at full height, so a 50 mm apex fillet does the same (cad/body_guards.py, envelopes in exports/body/shell/); the stop posts' fairings wait for leg/stops (D53 moves the posts) requirement and envelopes in the CAD (B6); fitted to the links by the leg workstream after leg/stops merges
5 The J501's fan 21 mm under the deck's top, under the turret's riser (the cooler centred on the module: fan at robot (-60, 9), the J501 project's Rev 0.9) the deck's cell field (the fan's outlet: it blows up): 31 cells 8 mm square on an 11 mm pitch round the fan's axis (a fingertip only, ≥ 15 mm from the blades: ISO 13857); in P2 the turret plate's opening covers none of them; in P3 a printed duct from the plate to 2 mm over the fan frame in the CAD (intake_cells(), turret_plate_intake(), body_shell.fan_duct); a test-finger check on P1
6 The wheels the BotWheel's tyre against the ground and anything in its path people-near mode (≤ 0.5 m/s), the radio stop; the shell does not cover the tyres procedure + firmware (T9)
7 The turret pan ring, flywheels, projectiles the turret's own plan (D41: the safety line cuts the flywheels and the dial in hardware); the body's stop relay opens its safety loop and cuts its 24 V (W34, W37) in the wiring

2. Electrical

# Hazard Where Measure Status
8 Shock the 13S bus 53.3 V maximum: under the 60 V DC SELV limit in the design (D43)
9 A short circuit of the pack (the real electrical hazard: hundreds of amps, burns, fire) the pack leads, the bus bars the BMS's short-circuit protection; the 80 A MRBF main fuse on the + lead within 150 mm of the plug (W3); a MINI 58V fuse on every branch; every + run in red silicone with its own fuse; bus bars on printed insulators (no screw of a bar reaches the plate) in the wiring; open: the pack's prospective short-circuit current against the fuses' 1 kA and 2 kA ratings, from the BMS's card or a bench trip test (docs/body-electrical.md 7)
10 A + lead chafed to the frame leaves the frame live the aluminium frame the frame is bonded to the - bus (W33): the fault blows the branch fuse in the wiring; test: frame to - bus < 0.1 Ohm (bring-up step 1)
11 Live pins a child can touch the charge port, the pack plug the charge port is a female XT60 (sockets only) on the robot; the XT90-S's pins on the robot side are dead with the pack out, and the charge port feeds only the pack in the wiring (W8, W9)
12 A fuse holder rated 32 V on a 53 V bus the eleven inline MINI holders the MINI 58V fuse interrupts (1 kA at 58 V); each holder is labelled "58 V fuses only" (a 32 V fuse fits the same socket); fuses are pulled only with the pack unplugged; a fuse board with PCB holders in P3 procedure + in the wiring (D55)
13 A spark at the pack plug the XT90 the XT90-S's anti-spark resistor; the main switch off before plugging procedure
14 The BMS bypassed through its data ground the BMS's UART (its ground is B-) nothing is wired to the BMS's data ports: the BMS is read over Bluetooth (D54) in the wiring
15 No stop when the radio drops the radio stop the ER3C-i's failsafe (no pulses) drops the RC switch, which drops the DPDT stop relay: its pole A opens the turret's safety loop (flywheels and dial cut in 20 ms), its pole B cuts the turret's 24 V, and the MCU, sensing the coil, sits the robot down (D37, D55) in the wiring; test: transmitter off opens the relay within 0.5 s (bring-up step 5)

3. Battery and charging

# Hazard Where Measure Status
16 Over-charge charging the charger stops at 53.3 V (4.10 V a cell, metered before first use); the BMS's cell over-voltage at 4.15 V is the backstop; charge over-current 6 A procedure + the BMS settings (docs/body-electrical.md 2.1)
17 Over-discharge, over-current, temperature driving the BMS: 3.00 V a cell, 100 A, charge 0-45 °C, discharge -10-60 °C; the MCU's own under-voltage sit-down at 3.3 V a cell (T9) the BMS settings; T9
18 A cell fire the drawer in the belly matched cells, fish paper on every + end, Kapton over the welds; charging only attended, on a non-flammable surface; the bay is PETG in P0-P2, which burns: in P3 the cells sit in an aluminium tub (a 0.063 in 5052 floor bent up 20 mm, two 0.063 in side plates, the belly plate as its roof: aluminium on five sides), its PETG end caps the only printed faces (body_shell.tub_*, D61) P0-P2 procedure; P3 in the CAD (the tub passes SendCutSend's rules)
19 A self-built pack the brick the build steps and checks of docs/body-electrical.md 2.1 (tap-order check before the BMS is plugged; a capacity and resistance test before first use) procedure + test

4. Heat and edges

# Hazard Where Measure Status
20 Hot cooler exhaust the G48R's fan blows up (j501-agx 94da39d): its exhaust leaves through the deck's cells and out of the riser's sides under the turret the fan duct keeps the exhaust out of the body; the fins' open sides are kept clear inside the body (cooler_fins_* keep-outs); the P3 walls' louvres (14 slots 4 x 46 mm a side: no finger) let the room's air in; the hand model gives 33 °C out of the riser at 40 W and the cooler's inlet 2.5 K over the room (docs/body-thermal.md) in the CAD; test B16: ≤ 45 °C out of the riser, the inlet ≤ 3 K over the room
21 Hot converters, VESCs, shunt the power plate inside the body, under the deck: not touchable once the shell is on (the right side's service door is held by four M3 screws: a tool opens it); on the open P1 frame, hands off while powered P1 procedure; P3 in the CAD
22 Sharp sheet edges and the lips' corners the tray, deck, belly, cheeks every SendCutSend part deburred (on the order); the lips' open corners have round reliefs; the shell covers the frame in P3, its door and hatch with 3-4 mm corner radii in the order (docs/body-orders.md); P3 in the CAD
26 Live pins on the body's leads every 48 V, 24 V and 12 V branch every live end on the body is a socket (XT60H-F, XT30U-F); the devices carry the pins (D58) in the wiring; test_no_live_pins_on_the_body
27 The P3 shell's openings the louvres, the port hatch, the door, the eyes' window, the D435 windows louvres 4 mm (no finger); the hatch and door closed by screws (a tool); the eyes' and cameras' windows are filled by the board and the cameras' glass in the CAD (cad/body_shell.py)
23 The lidar's laser the VLP-16 Class 1 (eye-safe) in the part

5. Mass and falls

# Hazard Where Measure Status
24 The robot (29-32 kg) falling on a child anywhere people-near mode (a person within 0.6 m: legs hold, ≤ 0.5 m/s, no jumps, sits after 2 s); the radio stop sits it down; the undamped power cut is the legs' fault case (D39) firmware (T9) + the leg workstream
25 A heavy robot the mass ledger: 32.2 kg at P3 with the shell, the tub and the turret (exports/body/mass.json) D57: designed for 32.5 kg, held under 32.0 as built: the gate (cad/test_body.py) passes with the open scheduled levers; the on-call levers next (docs/body-frame.md 4) in the CAD (the ledger as the gate)

A hazard review on the P1 frame, with this table and the clash sweep's list, comes before any session with children (the plan's rule).