{
 "version": "GMI v0.3 (printed)",
 "units": "mm",
 "note": "Standard faces (docs/mechanical-interfaces.md). Motor-specific patterns live in catalog/interfaces.json; adapters convert between them.",
 "AO-L": {
  "journal_d": 60.0,
  "journal_len": 11.0,
  "shoulder_d": 63.5,
  "shoulder_len": 2.0,
  "relief": 0.6,
  "spigot_d": 40.0,
  "spigot_h": 3.0,
  "bolts": 8,
  "thread": "M5",
  "pcd": 50.0,
  "bolt_deg": [
   0.0,
   30.0,
   90.0,
   120.0,
   180.0,
   210.0,
   270.0,
   300.0
  ],
  "dowels": 2,
  "dowel_d": 5.0,
  "dowel_deg": [
   60.0,
   150.0
  ],
  "note": "adapter on the motor output, CNC 6061-T6 from an instant-price service (D46): contact boss = the output flange, 0.6 mm relief elsewhere; sockets for the motor's pins; a \u00d860 j6 journal (lengthened by print.journal_extra) for the 61812; the standard face with 8 x M5 tapped and 2 x \u00d85 H7 dowel holes; the motor's 9 x M5 x 25 socket heads sit in pockets, below the face. made: 'print' gives the PA6-CF version (heat-set inserts)",
  "shoulder_note": "the shoulder runs up to the bearing and seats only its inner ring (61812 inner-ring shoulder 62-64)",
  "made": "cnc",
  "cnc": {
   "material": "6061-T6",
   "thread_depth": 16.0,
   "drill_depth": 19.0,
   "bore_d": 24.0,
   "bore_depth": 17.0,
   "journal_fit": "j6",
   "dowel_fit": "H7",
   "general": "ISO 2768-m",
   "finish": "as machined, deburred; no anodise (it would change the journal)"
  },
  "head": {
   "kind": "ISO 4762 socket head",
   "screw": "screw_m5x25",
   "length": 25.0,
   "d": 8.5,
   "h": 5.0,
   "pocket_d": 10.0,
   "below_face": 0.6,
   "note": "the motor's output screws: heads in \u00d810 pockets, their tops 0.6 mm below the standard face (the link sits on the face; its spigot recess is only \u00d840); 6 mm into the RS-04's 6.5 mm threads"
  },
  "pattern_note": "bolt_deg and dowel_deg are 15 deg from every RS-04 output screw (45, 75, 105, 165, 195, 225, 285, 315, 345): the old even pattern (22.5 + 45k) put six face holes 7.5 deg from a screw, where the screw-head counterbores broke into them, and both dowels on bolt holes (2026-10-27)"
 },
 "AC-L": {
  "bearing": "61812 (60 x 78 x 10)",
  "bearing_od": 78.0,
  "bearing_w": 10.0,
  "lip_d": 74.0,
  "seat_lip": 2.0,
  "plate_r": 76.0,
  "top_ext": 28.0,
  "post_r": 82.0,
  "post_deg": [
   30,
   90,
   150
  ],
  "post_thread": "M5",
  "post_d": 10.0,
  "bracket_bolts": 3,
  "bracket_thread": "M5",
  "note": "printed motor plate: the motor lug pattern and spigot recess on one side; the 61812 pressed in from the motor side up against a 2 mm lip at the leg-side face (no retainers: the only axial load its outer ring sees is outward, from the adapter's shoulder lifting the inner ring, and the lip takes it; the face stays flat, 1 mm from the link); post and yoke-insert holes",
  "lip_note": "the lip's bore at the leg-side face, over the bearing: clears the adapter's journal and the inner ring, bears only on the outer ring (61812 outer shoulder 72-76)"
 },
 "AO-S": {
  "journal_d": 40.0,
  "journal_len": 8.0,
  "shoulder_d": 45.0,
  "shoulder_len": 1.5,
  "relief": 0.5,
  "spigot_d": 24.0,
  "spigot_h": 2.5,
  "bolts": 6,
  "thread": "M4",
  "pcd": 34.0,
  "dowels": 2,
  "dowel_d": 4.0,
  "dowel_deg": [
   30.0,
   270.0
  ]
 },
 "AC-S": {
  "bearing": "61808 (40 x 52 x 7)",
  "bearing_od": 52.0,
  "bearing_w": 7.0,
  "lip_d": 47.0,
  "seat_lip": 2.0,
  "plate_r": 52.0,
  "top_ext": 18.0,
  "post_r": 56.0,
  "post_deg": [
   30,
   90,
   150
  ],
  "post_thread": "M4",
  "post_d": 8.0,
  "bracket_bolts": 3,
  "bracket_thread": "M4"
 },
 "KC": {
  "bearing": "6001-2RS",
  "bearing_od": 28.0,
  "bearing_id": 12.0,
  "bearing_w": 8.0,
  "spacing": 20.0,
  "pin_d": 12.0,
  "pin": "ISO 7379 shoulder screw, 12 mm shoulder, M10; length from the stack (a stocked length: the shin width takes up the rest)",
  "hub_od": 44.0,
  "pin_lengths": [
   60,
   70,
   80,
   90,
   100,
   110,
   120
  ]
 },
 "PR": {
  "rod_end": "M8 female rod end (igus KBRM-08 or SKF SIKAC 8 M)",
  "rod_end_eye_d": 8.0,
  "rod_end_ball_w": 12.0,
  "tube_od": 8.0,
  "tube_id": 0.0,
  "crank_r": 60.0,
  "bolt": "M8 shoulder bolt",
  "lever_beta_deg": -75.0,
  "note": "crank and shin lever parallel, at lever_beta_deg from the forward perpendicular (- = towards the foot): the rod's transmission sin = |cos(knee - beta)| stays >= 0.5 over the knee range (review A1); the rod is plain M8 threaded rod (buckling SF > 10 at the design load)",
  "rod": "M8 threaded rod, class 8.8 steel, cut to length; two female M8 rod ends and jam nuts (length adjustable)",
  "rod_root_d": 6.47,
  "pin": "ISO 7379 shoulder screw, 8 mm shoulder, M6, head flush in a counterbore on the crank / lever outer face; washer + thin M6 nyloc on the thigh side",
  "nut_gap": 7.0
 },
 "WH": {
  "pilot_d": 32.0,
  "bolts": 6,
  "thread": "M5",
  "pcd": 64.0,
  "cable_bore": 16.0,
  "plate_t": 10.0,
  "plate_d": 78.0,
  "note": "PCD 64 so the M5 heads clear the BotWheel's \u00d850 boss; the BotWheel's own M6 heads sit in pockets in the shin foot"
 },
 "HM": {
  "bolts": 6,
  "thread": "M6",
  "rect": [
   100.0,
   60.0
  ],
  "dowels": 2,
  "dowel_d": 6.0
 },
 "TM": {
  "bolts": 4,
  "thread": "M5",
  "dowels": 2,
  "dowel_d": 5.0
 },
 "CP": {
  "grommet_hole": 18.0,
  "clamp_screws": "2 x M3",
  "note": "plain \u00d818 pass through the printed walls (20 mm of PA6-CF): no grommet fits that thickness; break the edges"
 },
 "fasteners": {
  "M3": {
   "clear": 3.4,
   "tap": 2.5,
   "insert_pilot": 4.0
  },
  "M4": {
   "clear": 4.5,
   "tap": 3.3,
   "insert_pilot": 5.6
  },
  "M5": {
   "clear": 5.5,
   "tap": 4.2,
   "insert_pilot": 6.4
  },
  "M6": {
   "clear": 6.6,
   "tap": 5.0,
   "insert_pilot": 8.0
  }
 },
 "cables": {
  "wheel_power": {
   "od": 7.5,
   "what": "BotWheel phases (3 x 18 AWG) in a sleeve",
   "bend_min_flex": 75
  },
  "wheel_signal": {
   "od": 4.5,
   "what": "hall + encoder",
   "bend_min_flex": 45
  },
  "leg_power": {
   "od": 6.0,
   "what": "2 x 14 AWG silicone, 60 V bus to the hip and knee actuators",
   "bend_min_flex": 60
  },
  "can": {
   "od": 4.0,
   "what": "CAN twisted pair + ground",
   "bend_min_flex": 40
  }
 },
 "print": {
  "note": "D33: every made part is printed. Structural parts in PA6-CF (hardened nozzle; dry 8 h at 80 C before printing), 100 % solid where the CAD has walls; the rest in PETG. Bought hardware: bearings, steel pins and shoulder bolts, rod ends and threaded rod, screws, heat-set inserts.",
  "bed_mm": [
   256,
   256,
   256
  ],
  "structural": "pa6-cf",
  "secondary": "petg",
  "flexible": "tpu-95a",
  "defaults": {
   "journal_extra": 11.0,
   "plate_arm_w": 28.0,
   "plate_tab_window": false,
   "plate_pockets": false,
   "tab_extra": 8.0,
   "insert_depth_ao": 12.0,
   "lug_counterbore": 8.0
  }
 }
}
