{
  "schema_version": 1,
  "meta": {
    "name": "free_humanoid_centaur",
    "version": "0.1.0",
    "units_length": "Metre",
    "author": "Free Humanoid Centaur Contributors",
    "description": "Free Humanoid Centaur — third morphology in the OpenIE humanoid family alongside the bipedal Free Humanoid Platform (humanoid_bipedal), the wheeled Free Humanoid Wheeled (humanoid_wheeled), and the submersible Free Humanoid Submersible (humanoid_submersible). Targeted at the shoal dock-A wetlands surface service mission and the rough-terrain mobile-manipulation deployment band (disaster response, agricultural inspection, civil-infrastructure maintenance). 12-DoF wheel-leg-hybrid quadruped base (4 legs x 3 DoF, with QDD-driven wheel-feet on each leg) + bipedal upper body inherited verbatim. ~120 kg total system, 3 kWh battery, 50 kg sustained payload at extended reach, 2.0 m/s peak speed in wheel mode and 1.0 m/s in leg mode, 1.2 m x 0.8 m footprint, ~150 mm wheel-foot diameter. Leg joint actuator: T-Motor AK80-9 cycloidal-class quasi-direct-drive BLDC actuators with mjbots Moteus n1 controllers (corpus: anymal, anymal-d-eth-rsl-2022, sumitomo-cyclo, mit-cheetah-2 for the QDD lineage, mjbots-moteus for the controller). Wheel-foot actuator: T-Motor AK60-6 QDD direct-drive (corpus: mit-cheetah-2 / mjbots-moteus). Wheel-leg-hybrid architecture corpus anchor: ghost-robotics-vision-60 (commercial wheel-leg) plus the wider STAR-family wetland/amphibious lineage (dstar-zarrouk-2026, amphistar-zarrouk-2023, rstar-zarrouk-2019, star-fearing-2013) for the wetland-substrate decoupled-foot-mechanism prior art. Upper body actuator distribution inherited from bipedal sibling. Sensing: head-mounted Livox MID-360 solid-state lidar (wetland-tolerant; replaces mechanical-rotating lidar at this morphology because rotating-mechanism mud-tolerance is the failure mode at dock-A), u-blox ZED-F9P RTK GPS, VectorNav VN-100 IMU (production) or BNO055 (Phase 1 budget alternate), per-leg IMU + per-foot 6-axis F/T from the centaur architectural commitment #7. Compute: NVIDIA Jetson Orin Nano + Raspberry Pi 4 safety supervisor (Sherman Simplex pattern). Battery: 48V 30Ah (1.4 kWh) Li-ion industrial pack as Phase 1 single-pack baseline (Phase 2 splits to 3x 1 kWh hot-swap modules per architectural commitment #5). IP67 across all leg joints, lidar housing, and electrical enclosure. Safety supervisor: MathGround-style Simplex (corpus: sherman-simplex-architecture, control-barrier-functions) plus quadruped-specific invariants (slope-tilt 30deg, foot-fall validation, balance-margin hard-stop, leg-collision avoidance, mode-transition gate). Mission integration with shoal dock-A surface (cartridge-swap, waste-hopper, biology-reservoir handshake; identical protocol to wheeled sibling, different deployment context — wetland substrate). Phase 1 (v0.1.0) descriptor: leg actuators (12) and wheel-foot actuators (4) vendor-pinned to T-Motor AKxx series + mjbots Moteus n1 controllers; sensors pinned to Livox + u-blox + VectorNav + Cerulean; compute pinned to NVIDIA Jetson + Raspberry Pi. Wetland IP67 ratings are manufacturer claims at Phase 1 — verify before deployment. Total mass and inertia are still iterated in Phase 2 against fabrication; Phase 1 numbers are derived from T-Motor + Livox + VectorNav data sheets + reasonable structural estimates. Compiles to MuJoCo MJCF + Genesis fluid sim via the OpenLoco descriptor compiler.",
    "generator": "free-humanoid-centaur-scaffold",
    "morphology_class": "humanoid_quadruped",
    "morphology_family": "humanoid_quadruped",
    "alias": "centaur",
    "inherits_upper_body_from": "free-humanoid-platform",
    "operating_medium": "air_ground_wetland_substrate",
    "phase": "Phase 1 — descriptor with vendor-pinned components and BOM-grade actuator/sensor specs (2026-05-07). Phase 2 work: leg subassembly fabrication + wheel-foot prototype + IP67 sealing characterization on wetland-relevant duty cycles. Phase 3: full quadruped-base prototype with bipedal upper body integrated. Phase 4: shoal dock-A wetlands open-site trial.",
    "corpus_anchors": [
      "talos-bronze-giant",
      "ge-walking-truck",
      "raibert-hopping-1leg",
      "mcgeer-passive-walker",
      "mit-cheetah",
      "cheetah-cub-epfl",
      "mit-cheetah-2",
      "hyundai-boston-dynamics-spot",
      "anymal",
      "ghost-robotics-vision-60",
      "mini-cheetah",
      "anymal-d-eth-rsl-2022",
      "hwangbo-anymal-sim2real",
      "spot-fuel-cell",
      "dlr-justin",
      "mjbots-moteus",
      "honda-e0",
      "shadow-dexterous-hand",
      "pisa-iit-softhand",
      "dlr-hand-ii",
      "sherman-simplex-architecture",
      "control-barrier-functions",
      "iso-10218-collaborative-robots",
      "sumitomo-cyclo",
      "dstar-zarrouk-2026",
      "amphistar-zarrouk-2023",
      "rstar-zarrouk-2019",
      "star-fearing-2013",
      "caltech-leonardo-2021",
      "gundam-rx-78-2",
      "mazinger-z"
    ],
    "corpus_anchors_recommended_future_additions": [
      "anymal-wl",
      "bigdog",
      "alphadog",
      "t-motor-ak-series",
      "livox-mid-360",
      "u-blox-zed-f9p",
      "vectornav-vn-100",
      "nvidia-isaac-lab-2024"
    ],
    "siblings": {
      "bipedal_morphology": "../../free-humanoid-platform/descriptor/free-humanoid.udd.json",
      "wheeled_morphology": "../../free-humanoid-wheeled/descriptor/free-humanoid-wheeled.udd.json",
      "submersible_morphology": "../../free-humanoid-submersible/descriptor/free-humanoid-submersible.udd.json",
      "deployment_partner": "../../clean_fish/ARCHITECTURE.md"
    }
  },
  "robot": {
    "links": [
      { "name": "chassis", "mass_kg": 18.000, "inertia": [8.0e-1, 1.2e+0, 8.0e-1, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_chassis_v0" }, "_metadata": { "comment": "Quadruped-base chassis. ~1.2 m x 0.8 m x 0.25 m 6061-T6 aluminum monocoque (welded + machined extrusion). IP67-rated for wetland deployment per architectural commitment #2. Houses single 1.4 kWh 48V battery pack (Phase 1) low and centered; Phase 2 splits to three hot-swap modules per commitment #5. Compute and supervisor mounted high near the upper-body interface. Corpus citation: anymal, hyundai-boston-dynamics-spot. Wetland IP67 rating is the centaur's distinguishing constraint vs. the bipedal/wheeled siblings — see DSTAR (dstar-zarrouk-2026) for the canonical wetland-deployed legged-vehicle prior art." } },
      { "name": "battery_pack", "mass_kg": 12.000, "inertia": [1.0e-1, 1.0e-1, 5.0e-2, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_battery_pack_v0" }, "_metadata": { "comment": "Phase 1 single-pack baseline: industrial 48V 30Ah (~1.4 kWh) Li-ion pack in IP67 enclosure, mounted low and centered between the leg attachment points. Phase 2 work splits this to 3x 1 kWh hot-swap modules per architectural commitment #5 using the CC0 mating geometry inherited from free-humanoid-wheeled commitment #4. Phase 1 single-pack accepts the constraint that hot-swap is deferred to Phase 2; the constraint is simulator-equivalent at this descriptor revision." } },

      { "name": "FL_hip_yaw_link", "mass_kg": 1.500, "inertia": [3.0e-3, 3.0e-3, 3.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_hip_yaw_v0" }, "_metadata": { "comment": "Front-left hip yaw link. 3-DoF leg per architectural commitment #1. T-Motor AK80-9 actuator + IP67 housing. Corpus citation: anymal, mit-cheetah-2." } },
      { "name": "FL_thigh_link",   "mass_kg": 4.000, "inertia": [4.0e-2, 4.0e-2, 8.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_thigh_v0" }, "_metadata": { "comment": "Front-left thigh. Houses per-leg IMU per architectural commitment #7 (corpus: anymal, mit-cheetah-2)." } },
      { "name": "FL_shank_link",   "mass_kg": 2.500, "inertia": [2.5e-2, 2.5e-2, 4.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_shank_v0" }, "_metadata": { "comment": "Front-left shank. Distal end carries the wheel-foot 6-axis F/T sensor per architectural commitment #7." } },
      { "name": "FL_wheel_foot",   "mass_kg": 1.200, "inertia": [4.0e-3, 6.0e-3, 4.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_wheel_foot_v0" }, "_metadata": { "comment": "Wheel-leg-hybrid foot, ~150 mm diameter. T-Motor AK60-6 QDD direct-drive in wheel mode; electromagnetic brake (integrated in actuator) locks for leg mode. Polyurethane-tread wheel for wetland-substrate grip; sealed bearings IP67. Corpus citation: ghost-robotics-vision-60 (commercial wheel-leg), mit-cheetah-2 (QDD), star-fearing-2013 (wheg-foot lineage), amphistar-zarrouk-2023 (amphibious wetland-substrate variant)." } },

      { "name": "FR_hip_yaw_link", "mass_kg": 1.500, "inertia": [3.0e-3, 3.0e-3, 3.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_hip_yaw_v0" } },
      { "name": "FR_thigh_link",   "mass_kg": 4.000, "inertia": [4.0e-2, 4.0e-2, 8.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_thigh_v0" } },
      { "name": "FR_shank_link",   "mass_kg": 2.500, "inertia": [2.5e-2, 2.5e-2, 4.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_shank_v0" } },
      { "name": "FR_wheel_foot",   "mass_kg": 1.200, "inertia": [4.0e-3, 6.0e-3, 4.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_wheel_foot_v0" } },

      { "name": "RL_hip_yaw_link", "mass_kg": 1.500, "inertia": [3.0e-3, 3.0e-3, 3.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_hip_yaw_v0" } },
      { "name": "RL_thigh_link",   "mass_kg": 4.000, "inertia": [4.0e-2, 4.0e-2, 8.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_thigh_v0" } },
      { "name": "RL_shank_link",   "mass_kg": 2.500, "inertia": [2.5e-2, 2.5e-2, 4.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_shank_v0" } },
      { "name": "RL_wheel_foot",   "mass_kg": 1.200, "inertia": [4.0e-3, 6.0e-3, 4.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_wheel_foot_v0" } },

      { "name": "RR_hip_yaw_link", "mass_kg": 1.500, "inertia": [3.0e-3, 3.0e-3, 3.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_hip_yaw_v0" } },
      { "name": "RR_thigh_link",   "mass_kg": 4.000, "inertia": [4.0e-2, 4.0e-2, 8.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_thigh_v0" } },
      { "name": "RR_shank_link",   "mass_kg": 2.500, "inertia": [2.5e-2, 2.5e-2, 4.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_shank_v0" } },
      { "name": "RR_wheel_foot",   "mass_kg": 1.200, "inertia": [4.0e-3, 6.0e-3, 4.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_wheel_foot_v0" } },

      { "name": "pelvis", "mass_kg": 8.000, "inertia": [8.0e-2, 6.0e-2, 4.0e-2, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_pelvis_v0" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "torso", "mass_kg": 14.000, "inertia": [2.5e-1, 2.0e-1, 1.0e-1, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_torso_v0" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "head",  "mass_kg": 4.500, "inertia": [2.0e-2, 2.0e-2, 1.5e-2, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_centaur_head_with_lidar_v0" }, "_metadata": { "inherited_from": "free-humanoid-platform", "comment": "+1.0 kg over bipedal sibling for head-mounted Livox MID-360 solid-state lidar (IP67). Solid-state lidar replaces the original mechanical-rotating lidar plan: rotating-mechanism mud-tolerance is the dominant failure mode at dock-A wetlands deployment, and Livox MID-360 has no exposed rotating bearing. Corpus citation: anymal, hyundai-boston-dynamics-spot for the head-mounted lidar pattern; recommended-future livox-mid-360 for the solid-state subclass." } },
      { "name": "neck_yaw_link",   "mass_kg": 0.30, "inertia": [4.0e-4, 4.0e-4, 4.0e-4, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_neck_yaw_v0" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },

      { "name": "L_clavicle",  "mass_kg": 0.50, "inertia": [4.0e-4, 4.0e-4, 4.0e-4, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_clavicle_v0" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_shoulder_pitch_housing", "mass_kg": 0.80, "inertia": [8.0e-4, 8.0e-4, 6.0e-4, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "catalog_joints_harmonic_drive__ratio-100__motor-bldc-100w" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_shoulder_roll_housing",  "mass_kg": 0.80, "inertia": [8.0e-4, 8.0e-4, 6.0e-4, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "catalog_joints_harmonic_drive__ratio-100__motor-bldc-100w" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_upper_arm",  "mass_kg": 1.50, "inertia": [3.0e-3, 3.0e-3, 1.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "catalog_brackets_arm_segment__length-300" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_elbow_housing",   "mass_kg": 0.60, "inertia": [6.0e-4, 6.0e-4, 4.0e-4, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "catalog_joints_harmonic_drive__ratio-100__motor-bldc-100w" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_forearm",    "mass_kg": 1.20, "inertia": [2.5e-3, 2.5e-3, 8.0e-4, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "catalog_brackets_arm_segment__length-260" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_wrist_pitch_link", "mass_kg": 0.20, "inertia": [1.5e-4, 1.5e-4, 1.0e-4, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "catalog_joints_tendon_block__channels-3" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_wrist_roll_link",  "mass_kg": 0.20, "inertia": [1.5e-4, 1.5e-4, 1.0e-4, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "catalog_joints_tendon_block__channels-3" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_hand", "mass_kg": 0.45, "inertia": [3.0e-4, 3.0e-4, 2.0e-4, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_hand_underactuated_v0" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },

      { "name": "R_clavicle",  "mass_kg": 0.50, "inertia": [4.0e-4, 4.0e-4, 4.0e-4, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_clavicle_v0" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_shoulder_pitch_housing", "mass_kg": 0.80, "inertia": [8.0e-4, 8.0e-4, 6.0e-4, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "catalog_joints_harmonic_drive__ratio-100__motor-bldc-100w" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_shoulder_roll_housing",  "mass_kg": 0.80, "inertia": [8.0e-4, 8.0e-4, 6.0e-4, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "catalog_joints_harmonic_drive__ratio-100__motor-bldc-100w" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_upper_arm",  "mass_kg": 1.50, "inertia": [3.0e-3, 3.0e-3, 1.0e-3, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "catalog_brackets_arm_segment__length-300" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_elbow_housing",   "mass_kg": 0.60, "inertia": [6.0e-4, 6.0e-4, 4.0e-4, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "catalog_joints_harmonic_drive__ratio-100__motor-bldc-100w" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_forearm",    "mass_kg": 1.20, "inertia": [2.5e-3, 2.5e-3, 8.0e-4, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "catalog_brackets_arm_segment__length-260" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_wrist_pitch_link", "mass_kg": 0.20, "inertia": [1.5e-4, 1.5e-4, 1.0e-4, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "catalog_joints_tendon_block__channels-3" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_wrist_roll_link",  "mass_kg": 0.20, "inertia": [1.5e-4, 1.5e-4, 1.0e-4, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "catalog_joints_tendon_block__channels-3" }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_hand", "mass_kg": 0.45, "inertia": [3.0e-4, 3.0e-4, 2.0e-4, 0, 0, 0], "geometry_ref": { "type": "mesh_hash", "hash": "free_humanoid_hand_underactuated_v0" }, "_metadata": { "inherited_from": "free-humanoid-platform" } }
    ],
    "joints": [
      { "name": "BATTERY_pack_fixed", "joint_type": "fixed", "parent_link": "chassis", "child_link": "battery_pack", "axis": [0, 0, 1], "origin_xyz": [0.00, 0.00, -0.05], "origin_rpy": [0, 0, 0], "_metadata": { "comment": "Phase 1 single-pack mount, low and centered. Phase 2 work splits to 3x BATTERY_module_{a,b,c}_fixed using CC0 hot-swap commons (corpus: hyundai-boston-dynamics-spot, spot-fuel-cell)." } },

      { "name": "FL_HIP_yaw",   "joint_type": "revolute", "parent_link": "chassis",         "child_link": "FL_hip_yaw_link", "axis": [0, 0, 1], "origin_xyz": [ 0.45,  0.30, -0.05], "origin_rpy": [0, 0, 0], "limits": { "lower": -0.5, "upper": 0.5, "effort_max": 144.0, "velocity_max": 6.0 }, "_metadata": { "comment": "Front-left hip yaw. T-Motor AK80-9 (~144 N.m peak, ~24 N.m continuous) per architectural commitment #1. Corpus citation: anymal." } },
      { "name": "FL_HIP_pitch", "joint_type": "revolute", "parent_link": "FL_hip_yaw_link", "child_link": "FL_thigh_link",   "axis": [0, 1, 0], "origin_xyz": [0.0, 0.05, 0.0], "origin_rpy": [0, 0, 0], "limits": { "lower": -1.5, "upper": 1.5, "effort_max": 144.0, "velocity_max": 8.0 } },
      { "name": "FL_KNEE_pitch","joint_type": "revolute", "parent_link": "FL_thigh_link",   "child_link": "FL_shank_link",   "axis": [0, 1, 0], "origin_xyz": [0.0, 0.0, -0.30], "origin_rpy": [0, 0, 0], "limits": { "lower": -2.7, "upper": 0.0, "effort_max": 144.0, "velocity_max": 8.0 } },
      { "name": "FL_WHEEL",     "joint_type": "continuous", "parent_link": "FL_shank_link", "child_link": "FL_wheel_foot",   "axis": [0, 1, 0], "origin_xyz": [0.0, 0.0, -0.28], "origin_rpy": [0, 0, 0], "limits": { "effort_max": 24.0, "velocity_max": 14.0 }, "_metadata": { "comment": "Wheel-foot, continuous revolute. T-Motor AK60-6 (~24 N.m peak) QDD direct-drive in wheel mode; integrated brake locked in leg mode. Corpus citation: ghost-robotics-vision-60, mit-cheetah-2, mjbots-moteus, star-fearing-2013 (wheg lineage)." } },

      { "name": "FR_HIP_yaw",   "joint_type": "revolute", "parent_link": "chassis",         "child_link": "FR_hip_yaw_link", "axis": [0, 0, 1], "origin_xyz": [ 0.45, -0.30, -0.05], "origin_rpy": [0, 0, 0], "limits": { "lower": -0.5, "upper": 0.5, "effort_max": 144.0, "velocity_max": 6.0 } },
      { "name": "FR_HIP_pitch", "joint_type": "revolute", "parent_link": "FR_hip_yaw_link", "child_link": "FR_thigh_link",   "axis": [0, 1, 0], "origin_xyz": [0.0, -0.05, 0.0], "origin_rpy": [0, 0, 0], "limits": { "lower": -1.5, "upper": 1.5, "effort_max": 144.0, "velocity_max": 8.0 } },
      { "name": "FR_KNEE_pitch","joint_type": "revolute", "parent_link": "FR_thigh_link",   "child_link": "FR_shank_link",   "axis": [0, 1, 0], "origin_xyz": [0.0, 0.0, -0.30], "origin_rpy": [0, 0, 0], "limits": { "lower": -2.7, "upper": 0.0, "effort_max": 144.0, "velocity_max": 8.0 } },
      { "name": "FR_WHEEL",     "joint_type": "continuous", "parent_link": "FR_shank_link", "child_link": "FR_wheel_foot",   "axis": [0, 1, 0], "origin_xyz": [0.0, 0.0, -0.28], "origin_rpy": [0, 0, 0], "limits": { "effort_max": 24.0, "velocity_max": 14.0 } },

      { "name": "RL_HIP_yaw",   "joint_type": "revolute", "parent_link": "chassis",         "child_link": "RL_hip_yaw_link", "axis": [0, 0, 1], "origin_xyz": [-0.45,  0.30, -0.05], "origin_rpy": [0, 0, 0], "limits": { "lower": -0.5, "upper": 0.5, "effort_max": 144.0, "velocity_max": 6.0 } },
      { "name": "RL_HIP_pitch", "joint_type": "revolute", "parent_link": "RL_hip_yaw_link", "child_link": "RL_thigh_link",   "axis": [0, 1, 0], "origin_xyz": [0.0, 0.05, 0.0], "origin_rpy": [0, 0, 0], "limits": { "lower": -1.5, "upper": 1.5, "effort_max": 144.0, "velocity_max": 8.0 } },
      { "name": "RL_KNEE_pitch","joint_type": "revolute", "parent_link": "RL_thigh_link",   "child_link": "RL_shank_link",   "axis": [0, 1, 0], "origin_xyz": [0.0, 0.0, -0.30], "origin_rpy": [0, 0, 0], "limits": { "lower": -2.7, "upper": 0.0, "effort_max": 144.0, "velocity_max": 8.0 } },
      { "name": "RL_WHEEL",     "joint_type": "continuous", "parent_link": "RL_shank_link", "child_link": "RL_wheel_foot",   "axis": [0, 1, 0], "origin_xyz": [0.0, 0.0, -0.28], "origin_rpy": [0, 0, 0], "limits": { "effort_max": 24.0, "velocity_max": 14.0 } },

      { "name": "RR_HIP_yaw",   "joint_type": "revolute", "parent_link": "chassis",         "child_link": "RR_hip_yaw_link", "axis": [0, 0, 1], "origin_xyz": [-0.45, -0.30, -0.05], "origin_rpy": [0, 0, 0], "limits": { "lower": -0.5, "upper": 0.5, "effort_max": 144.0, "velocity_max": 6.0 } },
      { "name": "RR_HIP_pitch", "joint_type": "revolute", "parent_link": "RR_hip_yaw_link", "child_link": "RR_thigh_link",   "axis": [0, 1, 0], "origin_xyz": [0.0, -0.05, 0.0], "origin_rpy": [0, 0, 0], "limits": { "lower": -1.5, "upper": 1.5, "effort_max": 144.0, "velocity_max": 8.0 } },
      { "name": "RR_KNEE_pitch","joint_type": "revolute", "parent_link": "RR_thigh_link",   "child_link": "RR_shank_link",   "axis": [0, 1, 0], "origin_xyz": [0.0, 0.0, -0.30], "origin_rpy": [0, 0, 0], "limits": { "lower": -2.7, "upper": 0.0, "effort_max": 144.0, "velocity_max": 8.0 } },
      { "name": "RR_WHEEL",     "joint_type": "continuous", "parent_link": "RR_shank_link", "child_link": "RR_wheel_foot",   "axis": [0, 1, 0], "origin_xyz": [0.0, 0.0, -0.28], "origin_rpy": [0, 0, 0], "limits": { "effort_max": 24.0, "velocity_max": 14.0 } },

      { "name": "CHASSIS_to_pelvis", "joint_type": "fixed", "parent_link": "chassis", "child_link": "pelvis", "axis": [0, 0, 1], "origin_xyz": [0.10, 0.00, 0.20], "origin_rpy": [0, 0, 0], "_metadata": { "comment": "Upper-body pelvis mounts to the chassis at fixed origin. Replaces the bipedal sibling's free-floating pelvis root, the wheeled sibling's TOWER_lift prismatic, and the submersible sibling's HULL_to_pelvis fixed joint. The 0.10 m forward offset places the upper body forward-of-center on the chassis (centaur posture)." } },

      { "name": "WAIST_yaw", "joint_type": "revolute", "parent_link": "pelvis", "child_link": "torso", "axis": [0, 0, 1], "origin_xyz": [0.0, 0.0, 0.18], "origin_rpy": [0, 0, 0], "limits": { "lower": -1.5, "upper": 1.5, "effort_max": 80.0, "velocity_max": 4.0 }, "_metadata": { "inherited_from": "free-humanoid-platform" } },

      { "name": "NECK_yaw",   "joint_type": "revolute", "parent_link": "torso", "child_link": "neck_yaw_link", "axis": [0, 0, 1], "origin_xyz": [0.0, 0.0, 0.42], "origin_rpy": [0, 0, 0], "limits": { "lower": -1.4, "upper": 1.4, "effort_max": 8.0, "velocity_max": 6.0 }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "NECK_pitch", "joint_type": "revolute", "parent_link": "neck_yaw_link", "child_link": "head", "axis": [0, 1, 0], "origin_xyz": [0.0, 0.0, 0.06], "origin_rpy": [0, 0, 0], "limits": { "lower": -0.7, "upper": 0.7, "effort_max": 8.0, "velocity_max": 6.0 }, "_metadata": { "inherited_from": "free-humanoid-platform" } },

      { "name": "L_CLAVICLE_fixed", "joint_type": "fixed", "parent_link": "torso", "child_link": "L_clavicle", "axis": [0, 0, 1], "origin_xyz": [0.00, 0.16, 0.36], "origin_rpy": [0, 0, 0], "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_SHOULDER_pitch", "joint_type": "revolute", "parent_link": "L_clavicle", "child_link": "L_shoulder_pitch_housing", "axis": [0, 1, 0], "origin_xyz": [0.00, 0.04, 0.00], "origin_rpy": [0, 0, 0], "limits": { "lower": -3.14, "upper": 3.14, "effort_max": 60.0, "velocity_max": 6.0 }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_SHOULDER_roll",  "joint_type": "revolute", "parent_link": "L_shoulder_pitch_housing", "child_link": "L_shoulder_roll_housing", "axis": [1, 0, 0], "origin_xyz": [0.00, 0.00, 0.00], "origin_rpy": [0, 0, 0], "limits": { "lower": -0.4, "upper": 3.0, "effort_max": 60.0, "velocity_max": 6.0 }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_SHOULDER_yaw",   "joint_type": "revolute", "parent_link": "L_shoulder_roll_housing", "child_link": "L_upper_arm", "axis": [0, 0, 1], "origin_xyz": [0.00, 0.00, 0.00], "origin_rpy": [0, 0, 0], "limits": { "lower": -2.5, "upper": 2.5, "effort_max": 40.0, "velocity_max": 8.0 }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_ELBOW_pitch",    "joint_type": "revolute", "parent_link": "L_upper_arm", "child_link": "L_elbow_housing", "axis": [0, 1, 0], "origin_xyz": [0.00, 0.00, -0.30], "origin_rpy": [0, 0, 0], "limits": { "lower": -2.5, "upper": 0.0, "effort_max": 40.0, "velocity_max": 8.0 }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_ELBOW_to_forearm", "joint_type": "fixed", "parent_link": "L_elbow_housing", "child_link": "L_forearm", "axis": [0, 0, 1], "origin_xyz": [0.00, 0.00, 0.00], "origin_rpy": [0, 0, 0], "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_WRIST_yaw",   "joint_type": "revolute", "parent_link": "L_forearm", "child_link": "L_wrist_pitch_link", "axis": [0, 0, 1], "origin_xyz": [0.00, 0.00, -0.26], "origin_rpy": [0, 0, 0], "limits": { "lower": -2.5, "upper": 2.5, "effort_max": 8.0, "velocity_max": 8.0 }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_WRIST_pitch", "joint_type": "revolute", "parent_link": "L_wrist_pitch_link", "child_link": "L_wrist_roll_link", "axis": [0, 1, 0], "origin_xyz": [0.00, 0.00, 0.00], "origin_rpy": [0, 0, 0], "limits": { "lower": -1.0, "upper": 1.0, "effort_max": 8.0, "velocity_max": 8.0 }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_WRIST_roll",  "joint_type": "revolute", "parent_link": "L_wrist_roll_link", "child_link": "L_hand", "axis": [1, 0, 0], "origin_xyz": [0.00, 0.00, 0.00], "origin_rpy": [0, 0, 0], "limits": { "lower": -1.6, "upper": 1.6, "effort_max": 6.0, "velocity_max": 8.0 }, "_metadata": { "inherited_from": "free-humanoid-platform" } },

      { "name": "R_CLAVICLE_fixed", "joint_type": "fixed", "parent_link": "torso", "child_link": "R_clavicle", "axis": [0, 0, 1], "origin_xyz": [0.00, -0.16, 0.36], "origin_rpy": [0, 0, 0], "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_SHOULDER_pitch", "joint_type": "revolute", "parent_link": "R_clavicle", "child_link": "R_shoulder_pitch_housing", "axis": [0, 1, 0], "origin_xyz": [0.00, -0.04, 0.00], "origin_rpy": [0, 0, 0], "limits": { "lower": -3.14, "upper": 3.14, "effort_max": 60.0, "velocity_max": 6.0 }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_SHOULDER_roll",  "joint_type": "revolute", "parent_link": "R_shoulder_pitch_housing", "child_link": "R_shoulder_roll_housing", "axis": [1, 0, 0], "origin_xyz": [0.00, 0.00, 0.00], "origin_rpy": [0, 0, 0], "limits": { "lower": -3.0, "upper": 0.4, "effort_max": 60.0, "velocity_max": 6.0 }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_SHOULDER_yaw",   "joint_type": "revolute", "parent_link": "R_shoulder_roll_housing", "child_link": "R_upper_arm", "axis": [0, 0, 1], "origin_xyz": [0.00, 0.00, 0.00], "origin_rpy": [0, 0, 0], "limits": { "lower": -2.5, "upper": 2.5, "effort_max": 40.0, "velocity_max": 8.0 }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_ELBOW_pitch",    "joint_type": "revolute", "parent_link": "R_upper_arm", "child_link": "R_elbow_housing", "axis": [0, 1, 0], "origin_xyz": [0.00, 0.00, -0.30], "origin_rpy": [0, 0, 0], "limits": { "lower": -2.5, "upper": 0.0, "effort_max": 40.0, "velocity_max": 8.0 }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_ELBOW_to_forearm", "joint_type": "fixed", "parent_link": "R_elbow_housing", "child_link": "R_forearm", "axis": [0, 0, 1], "origin_xyz": [0.00, 0.00, 0.00], "origin_rpy": [0, 0, 0], "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_WRIST_yaw",   "joint_type": "revolute", "parent_link": "R_forearm", "child_link": "R_wrist_pitch_link", "axis": [0, 0, 1], "origin_xyz": [0.00, 0.00, -0.26], "origin_rpy": [0, 0, 0], "limits": { "lower": -2.5, "upper": 2.5, "effort_max": 8.0, "velocity_max": 8.0 }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_WRIST_pitch", "joint_type": "revolute", "parent_link": "R_wrist_pitch_link", "child_link": "R_wrist_roll_link", "axis": [0, 1, 0], "origin_xyz": [0.00, 0.00, 0.00], "origin_rpy": [0, 0, 0], "limits": { "lower": -1.0, "upper": 1.0, "effort_max": 8.0, "velocity_max": 8.0 }, "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_WRIST_roll",  "joint_type": "revolute", "parent_link": "R_wrist_roll_link", "child_link": "R_hand", "axis": [1, 0, 0], "origin_xyz": [0.00, 0.00, 0.00], "origin_rpy": [0, 0, 0], "limits": { "lower": -1.6, "upper": 1.6, "effort_max": 6.0, "velocity_max": 8.0 }, "_metadata": { "inherited_from": "free-humanoid-platform" } },

      { "name": "L_HAND_synergy", "joint_type": "revolute", "parent_link": "L_hand", "child_link": "L_hand", "axis": [0, 0, 1], "origin_xyz": [0.00, 0.00, 0.00], "origin_rpy": [0, 0, 0], "limits": { "lower": 0.0, "upper": 1.0, "effort_max": 6.0, "velocity_max": 52.0 }, "_metadata": { "synergy_dof": true, "spool_radius_m": 0.008, "inherited_from": "free-humanoid-platform", "comment": "Synergy progress DoF [0,1]. Single motor + 14:1 reducer drives all 5 fingers via fixed-ratio mechanical synergy (corpus: pisa-iit-softhand)." } },
      { "name": "R_HAND_synergy", "joint_type": "revolute", "parent_link": "R_hand", "child_link": "R_hand", "axis": [0, 0, 1], "origin_xyz": [0.00, 0.00, 0.00], "origin_rpy": [0, 0, 0], "limits": { "lower": 0.0, "upper": 1.0, "effort_max": 6.0, "velocity_max": 52.0 }, "_metadata": { "synergy_dof": true, "spool_radius_m": 0.008, "inherited_from": "free-humanoid-platform" } }
    ],
    "actuator_slots": [
      { "name": "FL_HIP_yaw",   "joint": "FL_HIP_yaw",   "tier": 2, "type": "qdd_cycloidal", "reducer_ratio": 9.0, "peak_torque_nm": 144.0, "continuous_torque_nm": 24.0, "max_velocity_rad_s": 6.0,  "corpus_citation": "anymal", "_metadata": { "part_number": "T-Motor AK80-9", "controller_part_number": "mjbots Moteus n1", "vendor": "T-Motor (CubeMars)", "controller_vendor": "mjbots Robotic Systems", "controller_corpus_citation": "mjbots-moteus", "comment": "T-Motor AK80-9 Mini-Cheetah-class brushless QDD actuator with 9:1 planetary reducer. ~144 N.m peak / ~24 N.m continuous, ~1.6 kg per actuator. IP67 rating per manufacturer datasheet (verify before deployment). Driven by mjbots Moteus n1 controller on CAN-FD bus. Per architectural commitment #1 (cycloidal-class outdoor/wetland duty cycle). Corpus citation: anymal, anymal-d-eth-rsl-2022 (industrial quadruped lineage), sumitomo-cyclo (cycloidal reducer prior art), mit-cheetah-2 / mini-cheetah (QDD lineage), mjbots-moteus (controller). Phase 1 alternate for budget builds: AK60-6 (~24 N.m peak) at 1/3 the cost." } },
      { "name": "FL_HIP_pitch", "joint": "FL_HIP_pitch", "tier": 2, "type": "qdd_cycloidal", "reducer_ratio": 9.0, "peak_torque_nm": 144.0, "continuous_torque_nm": 24.0, "max_velocity_rad_s": 8.0,  "corpus_citation": "anymal", "_metadata": { "part_number": "T-Motor AK80-9", "controller_part_number": "mjbots Moteus n1", "vendor": "T-Motor (CubeMars)" } },
      { "name": "FL_KNEE_pitch","joint": "FL_KNEE_pitch","tier": 2, "type": "qdd_cycloidal", "reducer_ratio": 9.0, "peak_torque_nm": 144.0, "continuous_torque_nm": 24.0, "max_velocity_rad_s": 8.0,  "corpus_citation": "anymal", "_metadata": { "part_number": "T-Motor AK80-9", "controller_part_number": "mjbots Moteus n1", "vendor": "T-Motor (CubeMars)" } },
      { "name": "FL_WHEEL",     "joint": "FL_WHEEL",     "tier": 2, "type": "qdd",            "reducer_ratio": 6.0, "peak_torque_nm": 24.0,  "continuous_torque_nm": 8.0,  "max_velocity_rad_s": 14.0, "corpus_citation": "mit-cheetah-2", "_metadata": { "part_number": "T-Motor AK60-6", "controller_part_number": "mjbots Moteus n1", "vendor": "T-Motor (CubeMars)", "controller_vendor": "mjbots Robotic Systems", "controller_corpus_citation": "mjbots-moteus", "comment": "T-Motor AK60-6 QDD direct-drive at the wheel-foot. ~24 N.m peak. Integrated brake locks for leg mode. Corpus citation: mit-cheetah-2 (QDD), mjbots-moteus (controller), ghost-robotics-vision-60 (commercial wheel-leg-hybrid), star-fearing-2013 (wheg-foot lineage), amphistar-zarrouk-2023 (amphibious wetland-substrate variant)." } },

      { "name": "FR_HIP_yaw",   "joint": "FR_HIP_yaw",   "tier": 2, "type": "qdd_cycloidal", "reducer_ratio": 9.0, "peak_torque_nm": 144.0, "continuous_torque_nm": 24.0, "max_velocity_rad_s": 6.0,  "corpus_citation": "anymal", "_metadata": { "part_number": "T-Motor AK80-9", "controller_part_number": "mjbots Moteus n1", "vendor": "T-Motor (CubeMars)" } },
      { "name": "FR_HIP_pitch", "joint": "FR_HIP_pitch", "tier": 2, "type": "qdd_cycloidal", "reducer_ratio": 9.0, "peak_torque_nm": 144.0, "continuous_torque_nm": 24.0, "max_velocity_rad_s": 8.0,  "corpus_citation": "anymal", "_metadata": { "part_number": "T-Motor AK80-9", "controller_part_number": "mjbots Moteus n1", "vendor": "T-Motor (CubeMars)" } },
      { "name": "FR_KNEE_pitch","joint": "FR_KNEE_pitch","tier": 2, "type": "qdd_cycloidal", "reducer_ratio": 9.0, "peak_torque_nm": 144.0, "continuous_torque_nm": 24.0, "max_velocity_rad_s": 8.0,  "corpus_citation": "anymal", "_metadata": { "part_number": "T-Motor AK80-9", "controller_part_number": "mjbots Moteus n1", "vendor": "T-Motor (CubeMars)" } },
      { "name": "FR_WHEEL",     "joint": "FR_WHEEL",     "tier": 2, "type": "qdd",            "reducer_ratio": 6.0, "peak_torque_nm": 24.0,  "continuous_torque_nm": 8.0,  "max_velocity_rad_s": 14.0, "corpus_citation": "mit-cheetah-2", "_metadata": { "part_number": "T-Motor AK60-6", "controller_part_number": "mjbots Moteus n1", "vendor": "T-Motor (CubeMars)" } },

      { "name": "RL_HIP_yaw",   "joint": "RL_HIP_yaw",   "tier": 2, "type": "qdd_cycloidal", "reducer_ratio": 9.0, "peak_torque_nm": 144.0, "continuous_torque_nm": 24.0, "max_velocity_rad_s": 6.0,  "corpus_citation": "anymal", "_metadata": { "part_number": "T-Motor AK80-9", "controller_part_number": "mjbots Moteus n1", "vendor": "T-Motor (CubeMars)" } },
      { "name": "RL_HIP_pitch", "joint": "RL_HIP_pitch", "tier": 2, "type": "qdd_cycloidal", "reducer_ratio": 9.0, "peak_torque_nm": 144.0, "continuous_torque_nm": 24.0, "max_velocity_rad_s": 8.0,  "corpus_citation": "anymal", "_metadata": { "part_number": "T-Motor AK80-9", "controller_part_number": "mjbots Moteus n1", "vendor": "T-Motor (CubeMars)" } },
      { "name": "RL_KNEE_pitch","joint": "RL_KNEE_pitch","tier": 2, "type": "qdd_cycloidal", "reducer_ratio": 9.0, "peak_torque_nm": 144.0, "continuous_torque_nm": 24.0, "max_velocity_rad_s": 8.0,  "corpus_citation": "anymal", "_metadata": { "part_number": "T-Motor AK80-9", "controller_part_number": "mjbots Moteus n1", "vendor": "T-Motor (CubeMars)" } },
      { "name": "RL_WHEEL",     "joint": "RL_WHEEL",     "tier": 2, "type": "qdd",            "reducer_ratio": 6.0, "peak_torque_nm": 24.0,  "continuous_torque_nm": 8.0,  "max_velocity_rad_s": 14.0, "corpus_citation": "mit-cheetah-2", "_metadata": { "part_number": "T-Motor AK60-6", "controller_part_number": "mjbots Moteus n1", "vendor": "T-Motor (CubeMars)" } },

      { "name": "RR_HIP_yaw",   "joint": "RR_HIP_yaw",   "tier": 2, "type": "qdd_cycloidal", "reducer_ratio": 9.0, "peak_torque_nm": 144.0, "continuous_torque_nm": 24.0, "max_velocity_rad_s": 6.0,  "corpus_citation": "anymal", "_metadata": { "part_number": "T-Motor AK80-9", "controller_part_number": "mjbots Moteus n1", "vendor": "T-Motor (CubeMars)" } },
      { "name": "RR_HIP_pitch", "joint": "RR_HIP_pitch", "tier": 2, "type": "qdd_cycloidal", "reducer_ratio": 9.0, "peak_torque_nm": 144.0, "continuous_torque_nm": 24.0, "max_velocity_rad_s": 8.0,  "corpus_citation": "anymal", "_metadata": { "part_number": "T-Motor AK80-9", "controller_part_number": "mjbots Moteus n1", "vendor": "T-Motor (CubeMars)" } },
      { "name": "RR_KNEE_pitch","joint": "RR_KNEE_pitch","tier": 2, "type": "qdd_cycloidal", "reducer_ratio": 9.0, "peak_torque_nm": 144.0, "continuous_torque_nm": 24.0, "max_velocity_rad_s": 8.0,  "corpus_citation": "anymal", "_metadata": { "part_number": "T-Motor AK80-9", "controller_part_number": "mjbots Moteus n1", "vendor": "T-Motor (CubeMars)" } },
      { "name": "RR_WHEEL",     "joint": "RR_WHEEL",     "tier": 2, "type": "qdd",            "reducer_ratio": 6.0, "peak_torque_nm": 24.0,  "continuous_torque_nm": 8.0,  "max_velocity_rad_s": 14.0, "corpus_citation": "mit-cheetah-2", "_metadata": { "part_number": "T-Motor AK60-6", "controller_part_number": "mjbots Moteus n1", "vendor": "T-Motor (CubeMars)" } },

      { "name": "WAIST_yaw",        "joint": "WAIST_yaw",        "tier": 2, "type": "qdd",            "corpus_citation": "mini-cheetah", "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "NECK_yaw",         "joint": "NECK_yaw",         "tier": 1, "type": "qdd",            "corpus_citation": "mini-cheetah", "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "NECK_pitch",       "joint": "NECK_pitch",       "tier": 1, "type": "qdd",            "corpus_citation": "mini-cheetah", "_metadata": { "inherited_from": "free-humanoid-platform" } },

      { "name": "L_SHOULDER_pitch", "joint": "L_SHOULDER_pitch", "tier": 2, "type": "harmonic_drive", "corpus_citation": "honda-e0", "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_SHOULDER_roll",  "joint": "L_SHOULDER_roll",  "tier": 2, "type": "harmonic_drive", "corpus_citation": "honda-e0", "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_SHOULDER_yaw",   "joint": "L_SHOULDER_yaw",   "tier": 2, "type": "harmonic_drive", "corpus_citation": "honda-e0", "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_ELBOW_pitch",    "joint": "L_ELBOW_pitch",    "tier": 2, "type": "harmonic_drive", "corpus_citation": "honda-e0", "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_WRIST_yaw",      "joint": "L_WRIST_yaw",      "tier": 1, "type": "tendon",         "corpus_citation": "shadow-dexterous-hand", "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_WRIST_pitch",    "joint": "L_WRIST_pitch",    "tier": 1, "type": "tendon",         "corpus_citation": "shadow-dexterous-hand", "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "L_WRIST_roll",     "joint": "L_WRIST_roll",     "tier": 1, "type": "tendon",         "corpus_citation": "shadow-dexterous-hand", "_metadata": { "inherited_from": "free-humanoid-platform" } },

      { "name": "R_SHOULDER_pitch", "joint": "R_SHOULDER_pitch", "tier": 2, "type": "harmonic_drive", "corpus_citation": "honda-e0", "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_SHOULDER_roll",  "joint": "R_SHOULDER_roll",  "tier": 2, "type": "harmonic_drive", "corpus_citation": "honda-e0", "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_SHOULDER_yaw",   "joint": "R_SHOULDER_yaw",   "tier": 2, "type": "harmonic_drive", "corpus_citation": "honda-e0", "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_ELBOW_pitch",    "joint": "R_ELBOW_pitch",    "tier": 2, "type": "harmonic_drive", "corpus_citation": "honda-e0", "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_WRIST_yaw",      "joint": "R_WRIST_yaw",      "tier": 1, "type": "tendon",         "corpus_citation": "shadow-dexterous-hand", "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_WRIST_pitch",    "joint": "R_WRIST_pitch",    "tier": 1, "type": "tendon",         "corpus_citation": "shadow-dexterous-hand", "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_WRIST_roll",     "joint": "R_WRIST_roll",     "tier": 1, "type": "tendon",         "corpus_citation": "shadow-dexterous-hand", "_metadata": { "inherited_from": "free-humanoid-platform" } },

      { "name": "L_HAND_synergy",   "joint": "L_HAND_synergy",   "tier": 2, "type": "tendon",         "reducer_ratio": 14.0, "peak_torque_nm": 6.25, "continuous_torque_nm": 0.82, "max_velocity_rad_s": 52.4, "corpus_citation": "pisa-iit-softhand", "_metadata": { "inherited_from": "free-humanoid-platform" } },
      { "name": "R_HAND_synergy",   "joint": "R_HAND_synergy",   "tier": 2, "type": "tendon",         "reducer_ratio": 14.0, "peak_torque_nm": 6.25, "continuous_torque_nm": 0.82, "max_velocity_rad_s": 52.4, "corpus_citation": "pisa-iit-softhand", "_metadata": { "inherited_from": "free-humanoid-platform" } }
    ],
    "sensors": [
      { "name": "head_lidar", "type": "solid_state_lidar", "frame": "head", "rate_hz": 10, "_metadata": { "part_number": "MID-360", "vendor": "Livox", "ip_rating": "IP67 (manufacturer claim — verify before deployment)", "range_m": 40, "fov_deg_horizontal": 360, "fov_deg_vertical": 59, "comment": "Livox MID-360 solid-state lidar — no exposed rotating bearing, which is the primary failure mode for mechanical-rotating lidar in wetland deployment. Mounted at top of head. 360 deg horizontal FoV, 59 deg vertical, 40 m range. Replaces the original mechanical-rotating-lidar plan documented in ARCHITECTURE.md §2.4 — the architectural intent (head-mounted lidar for outdoor obstacle avoidance + dock approach + terrain classification + foothold planning) is unchanged. Corpus citation: anymal, hyundai-boston-dynamics-spot for the head-mounted lidar pattern; recommended-future livox-mid-360 for the solid-state subclass." } },
      { "name": "gps", "type": "rtk_gnss", "frame": "chassis", "rate_hz": 10, "_metadata": { "part_number": "ZED-F9P", "vendor": "u-blox", "comment": "u-blox ZED-F9P multi-band RTK GNSS receiver. cm-level accuracy with RTK base station; meter-level accuracy standalone. Critical for wetland navigation where visual landmarks are absent. Corpus citation: dlr-justin (mobile-manipulation pattern); recommended-future u-blox-zed-f9p." } },
      { "name": "body_imu", "type": "imu_9dof", "frame": "chassis", "rate_hz": 200, "_metadata": { "part_number": "VN-100", "vendor": "VectorNav", "comment": "VectorNav VN-100 industrial 9-DoF IMU. Body-frame attitude + rates for the leg-mode controller and the slope-tilt safety invariant. Phase 1 budget alternate: Bosch BNO055 (~$30) for bench testing. Corpus citation: anymal, mit-cheetah-2 for body-frame IMU pattern; recommended-future vectornav-vn-100." } },
      { "name": "FL_leg_imu", "type": "imu_6dof", "frame": "FL_thigh_link", "rate_hz": 200, "_metadata": { "comment": "Per-leg IMU per architectural commitment #7. Corpus citation: anymal, mit-cheetah-2." } },
      { "name": "FR_leg_imu", "type": "imu_6dof", "frame": "FR_thigh_link", "rate_hz": 200 },
      { "name": "RL_leg_imu", "type": "imu_6dof", "frame": "RL_thigh_link", "rate_hz": 200 },
      { "name": "RR_leg_imu", "type": "imu_6dof", "frame": "RR_thigh_link", "rate_hz": 200 },
      { "name": "FL_foot_ft", "type": "force_torque_6axis", "frame": "FL_wheel_foot", "rate_hz": 200, "_metadata": { "comment": "Per-foot 6-axis F/T sensor between the lower-leg link and the wheel-foot. Provides foot-fall validation and contact-force feedback. Corpus citation: anymal, hyundai-boston-dynamics-spot." } },
      { "name": "FR_foot_ft", "type": "force_torque_6axis", "frame": "FR_wheel_foot", "rate_hz": 200 },
      { "name": "RL_foot_ft", "type": "force_torque_6axis", "frame": "RL_wheel_foot", "rate_hz": 200 },
      { "name": "RR_foot_ft", "type": "force_torque_6axis", "frame": "RR_wheel_foot", "rate_hz": 200 },
      { "name": "head_stereo",  "type": "stereo_camera",           "frame": "head",       "rate_hz": 30, "_metadata": { "part_number": "ZED 2i", "vendor": "Stereolabs", "inherited_from": "free-humanoid-platform", "comment": "Stereolabs ZED 2i stereo camera; forward-looking. IP66 (manufacturer claim — verify wetland-tolerance)." } },
      { "name": "fisheye_camera_array", "type": "camera_array",   "frame": "chassis", "rate_hz": 30, "_metadata": { "comment": "4x monocular fisheye cameras for omnidirectional awareness on the chassis." } },
      { "name": "tilt_sensor", "type": "inclinometer_2dof", "frame": "chassis", "rate_hz": 100, "_metadata": { "comment": "Dedicated 2-DoF tilt sensor wired direct to the safety supervisor for the slope-tilt invariant. Independent of body_imu per architectural commitment #7 (defense-in-depth)." } }
    ],
    "modes": [
      {
        "name": "safe_pose",
        "_metadata": { "comment": "Four-leg static stance, all wheel-foot brakes latched, leg joints holding pose, upper body in tucked posture. Default fail-safe state. Corpus citation: sherman-simplex-architecture, control-barrier-functions, anymal." },
        "hold_positions": {
          "FL_HIP_yaw": 0.0, "FL_HIP_pitch": 0.7, "FL_KNEE_pitch": -1.4, "FL_WHEEL": 0.0,
          "FR_HIP_yaw": 0.0, "FR_HIP_pitch": 0.7, "FR_KNEE_pitch": -1.4, "FR_WHEEL": 0.0,
          "RL_HIP_yaw": 0.0, "RL_HIP_pitch": 0.7, "RL_KNEE_pitch": -1.4, "RL_WHEEL": 0.0,
          "RR_HIP_yaw": 0.0, "RR_HIP_pitch": 0.7, "RR_KNEE_pitch": -1.4, "RR_WHEEL": 0.0,
          "WAIST_yaw": 0.0, "NECK_yaw": 0.0, "NECK_pitch": 0.0,
          "L_SHOULDER_pitch": 0.0, "L_SHOULDER_roll": 0.0, "L_SHOULDER_yaw": 0.0, "L_ELBOW_pitch": -1.4,
          "L_WRIST_yaw": 0.0, "L_WRIST_pitch": 0.0, "L_WRIST_roll": 0.0,
          "R_SHOULDER_pitch": 0.0, "R_SHOULDER_roll": 0.0, "R_SHOULDER_yaw": 0.0, "R_ELBOW_pitch": -1.4,
          "R_WRIST_yaw": 0.0, "R_WRIST_pitch": 0.0, "R_WRIST_roll": 0.0
        },
        "actuator_roles": {
          "FL_HIP_yaw": "hold", "FL_HIP_pitch": "hold", "FL_KNEE_pitch": "hold", "FL_WHEEL": "brake",
          "FR_HIP_yaw": "hold", "FR_HIP_pitch": "hold", "FR_KNEE_pitch": "hold", "FR_WHEEL": "brake",
          "RL_HIP_yaw": "hold", "RL_HIP_pitch": "hold", "RL_KNEE_pitch": "hold", "RL_WHEEL": "brake",
          "RR_HIP_yaw": "hold", "RR_HIP_pitch": "hold", "RR_KNEE_pitch": "hold", "RR_WHEEL": "brake",
          "WAIST_yaw": "hold", "NECK_yaw": "hold", "NECK_pitch": "hold",
          "L_SHOULDER_pitch": "hold", "L_SHOULDER_roll": "hold", "L_SHOULDER_yaw": "hold", "L_ELBOW_pitch": "hold",
          "L_WRIST_yaw": "hold", "L_WRIST_pitch": "hold", "L_WRIST_roll": "hold",
          "R_SHOULDER_pitch": "hold", "R_SHOULDER_roll": "hold", "R_SHOULDER_yaw": "hold", "R_ELBOW_pitch": "hold",
          "R_WRIST_yaw": "hold", "R_WRIST_pitch": "hold", "R_WRIST_roll": "hold"
        }
      },
      {
        "name": "wheel_mode_drive",
        "_metadata": { "comment": "Legs in low-stance posture holding pose; wheel-feet driving. Skid-steer mobile-robot kinematics. Linear vel <= 2.0 m/s, angular vel <= 1.5 rad/s. Edge-proximity invariant active. Corpus citation: ghost-robotics-vision-60, dstar-zarrouk-2026 (decoupled-foot wetland mobility variant)." },
        "hold_positions": {
          "FL_HIP_yaw": 0.0, "FL_HIP_pitch": 0.5, "FL_KNEE_pitch": -1.0,
          "FR_HIP_yaw": 0.0, "FR_HIP_pitch": 0.5, "FR_KNEE_pitch": -1.0,
          "RL_HIP_yaw": 0.0, "RL_HIP_pitch": 0.5, "RL_KNEE_pitch": -1.0,
          "RR_HIP_yaw": 0.0, "RR_HIP_pitch": 0.5, "RR_KNEE_pitch": -1.0
        },
        "actuator_roles": {
          "FL_HIP_yaw": "hold", "FL_HIP_pitch": "hold", "FL_KNEE_pitch": "hold", "FL_WHEEL": "velocity",
          "FR_HIP_yaw": "hold", "FR_HIP_pitch": "hold", "FR_KNEE_pitch": "hold", "FR_WHEEL": "velocity",
          "RL_HIP_yaw": "hold", "RL_HIP_pitch": "hold", "RL_KNEE_pitch": "hold", "RL_WHEEL": "velocity",
          "RR_HIP_yaw": "hold", "RR_HIP_pitch": "hold", "RR_KNEE_pitch": "hold", "RR_WHEEL": "velocity",
          "WAIST_yaw": "impedance", "NECK_yaw": "impedance", "NECK_pitch": "impedance",
          "L_SHOULDER_pitch": "impedance", "L_SHOULDER_roll": "impedance", "L_SHOULDER_yaw": "impedance", "L_ELBOW_pitch": "impedance",
          "L_WRIST_yaw": "hold", "L_WRIST_pitch": "hold", "L_WRIST_roll": "hold",
          "R_SHOULDER_pitch": "impedance", "R_SHOULDER_roll": "impedance", "R_SHOULDER_yaw": "impedance", "R_ELBOW_pitch": "impedance",
          "R_WRIST_yaw": "hold", "R_WRIST_pitch": "hold", "R_WRIST_roll": "hold"
        }
      },
      {
        "name": "leg_mode_walk",
        "_metadata": { "comment": "Wheel-feet brake-locked; legs articulating in walk gait (3-on-1 swing pattern). Foot-fall validation invariant active. Balance-margin invariant active. Linear vel <= 0.5 m/s. Wetland-substrate mode (mud/vegetation/saturated soil) — sinkage modeling per ARCHITECTURE §5 #3 is gating fidelity here. Corpus citation: anymal, mit-cheetah-2, hwangbo-anymal-sim2real, dstar-zarrouk-2026 (wetland sprawl), amphistar-zarrouk-2023 (amphibious lineage), star-fearing-2013, rstar-zarrouk-2019." },
        "hold_positions": {},
        "actuator_roles": {
          "FL_HIP_yaw": "impedance", "FL_HIP_pitch": "impedance", "FL_KNEE_pitch": "impedance", "FL_WHEEL": "brake",
          "FR_HIP_yaw": "impedance", "FR_HIP_pitch": "impedance", "FR_KNEE_pitch": "impedance", "FR_WHEEL": "brake",
          "RL_HIP_yaw": "impedance", "RL_HIP_pitch": "impedance", "RL_KNEE_pitch": "impedance", "RL_WHEEL": "brake",
          "RR_HIP_yaw": "impedance", "RR_HIP_pitch": "impedance", "RR_KNEE_pitch": "impedance", "RR_WHEEL": "brake",
          "WAIST_yaw": "impedance", "NECK_yaw": "impedance", "NECK_pitch": "impedance",
          "L_SHOULDER_pitch": "impedance", "L_SHOULDER_roll": "impedance", "L_SHOULDER_yaw": "impedance", "L_ELBOW_pitch": "impedance",
          "L_WRIST_yaw": "hold", "L_WRIST_pitch": "hold", "L_WRIST_roll": "hold",
          "R_SHOULDER_pitch": "impedance", "R_SHOULDER_roll": "impedance", "R_SHOULDER_yaw": "impedance", "R_ELBOW_pitch": "impedance",
          "R_WRIST_yaw": "hold", "R_WRIST_pitch": "hold", "R_WRIST_roll": "hold"
        }
      },
      {
        "name": "leg_mode_trot",
        "_metadata": { "comment": "Wheel-feet brake-locked; legs articulating in trot gait (2-on-2 diagonal swing). Faster leg-mode transit on dry firm ground. Linear vel <= 1.0 m/s. Corpus citation: mit-cheetah-2, mini-cheetah, hwangbo-anymal-sim2real." },
        "hold_positions": {},
        "actuator_roles": {
          "FL_HIP_yaw": "impedance", "FL_HIP_pitch": "impedance", "FL_KNEE_pitch": "impedance", "FL_WHEEL": "brake",
          "FR_HIP_yaw": "impedance", "FR_HIP_pitch": "impedance", "FR_KNEE_pitch": "impedance", "FR_WHEEL": "brake",
          "RL_HIP_yaw": "impedance", "RL_HIP_pitch": "impedance", "RL_KNEE_pitch": "impedance", "RL_WHEEL": "brake",
          "RR_HIP_yaw": "impedance", "RR_HIP_pitch": "impedance", "RR_KNEE_pitch": "impedance", "RR_WHEEL": "brake",
          "WAIST_yaw": "impedance", "NECK_yaw": "impedance", "NECK_pitch": "impedance",
          "L_SHOULDER_pitch": "hold", "L_SHOULDER_roll": "hold", "L_SHOULDER_yaw": "hold", "L_ELBOW_pitch": "hold",
          "L_WRIST_yaw": "hold", "L_WRIST_pitch": "hold", "L_WRIST_roll": "hold",
          "R_SHOULDER_pitch": "hold", "R_SHOULDER_roll": "hold", "R_SHOULDER_yaw": "hold", "R_ELBOW_pitch": "hold",
          "R_WRIST_yaw": "hold", "R_WRIST_pitch": "hold", "R_WRIST_roll": "hold"
        }
      },
      {
        "name": "manipulation_static",
        "_metadata": { "comment": "Mode-agnostic: whichever locomotion mode entered the state, all locomotion actuators hold pose; brakes latched on wheel-feet; upper body in manipulation. Cartridge-swap, waste-hopper retrieval, biology-reservoir handshake. shoal integration: clean_fish ARCHITECTURE 2.2, 3.2." },
        "hold_positions": {
          "FL_WHEEL": 0.0, "FR_WHEEL": 0.0, "RL_WHEEL": 0.0, "RR_WHEEL": 0.0
        },
        "actuator_roles": {
          "FL_HIP_yaw": "hold", "FL_HIP_pitch": "hold", "FL_KNEE_pitch": "hold", "FL_WHEEL": "brake",
          "FR_HIP_yaw": "hold", "FR_HIP_pitch": "hold", "FR_KNEE_pitch": "hold", "FR_WHEEL": "brake",
          "RL_HIP_yaw": "hold", "RL_HIP_pitch": "hold", "RL_KNEE_pitch": "hold", "RL_WHEEL": "brake",
          "RR_HIP_yaw": "hold", "RR_HIP_pitch": "hold", "RR_KNEE_pitch": "hold", "RR_WHEEL": "brake",
          "WAIST_yaw": "impedance", "NECK_yaw": "impedance", "NECK_pitch": "impedance",
          "L_SHOULDER_pitch": "impedance", "L_SHOULDER_roll": "impedance", "L_SHOULDER_yaw": "impedance", "L_ELBOW_pitch": "impedance",
          "L_WRIST_yaw": "impedance", "L_WRIST_pitch": "impedance", "L_WRIST_roll": "impedance",
          "R_SHOULDER_pitch": "impedance", "R_SHOULDER_roll": "impedance", "R_SHOULDER_yaw": "impedance", "R_ELBOW_pitch": "impedance",
          "R_WRIST_yaw": "impedance", "R_WRIST_pitch": "impedance", "R_WRIST_roll": "impedance"
        }
      },
      {
        "name": "mode_transition",
        "_metadata": { "comment": "Intermediate stand-still state during a wheel-mode <-> leg-mode transition. All actuators latched in current pose, all wheel-foot brakes engaged, body IMU pitch/roll verified within 5 deg before completion. Mode-transition gate invariant active. Corpus citation: ghost-robotics-vision-60." },
        "hold_positions": {
          "FL_WHEEL": 0.0, "FR_WHEEL": 0.0, "RL_WHEEL": 0.0, "RR_WHEEL": 0.0
        },
        "actuator_roles": {
          "FL_HIP_yaw": "hold", "FL_HIP_pitch": "hold", "FL_KNEE_pitch": "hold", "FL_WHEEL": "brake",
          "FR_HIP_yaw": "hold", "FR_HIP_pitch": "hold", "FR_KNEE_pitch": "hold", "FR_WHEEL": "brake",
          "RL_HIP_yaw": "hold", "RL_HIP_pitch": "hold", "RL_KNEE_pitch": "hold", "RL_WHEEL": "brake",
          "RR_HIP_yaw": "hold", "RR_HIP_pitch": "hold", "RR_KNEE_pitch": "hold", "RR_WHEEL": "brake",
          "WAIST_yaw": "hold", "NECK_yaw": "hold", "NECK_pitch": "hold",
          "L_SHOULDER_pitch": "hold", "L_SHOULDER_roll": "hold", "L_SHOULDER_yaw": "hold", "L_ELBOW_pitch": "hold",
          "L_WRIST_yaw": "hold", "L_WRIST_pitch": "hold", "L_WRIST_roll": "hold",
          "R_SHOULDER_pitch": "hold", "R_SHOULDER_roll": "hold", "R_SHOULDER_yaw": "hold", "R_ELBOW_pitch": "hold",
          "R_WRIST_yaw": "hold", "R_WRIST_pitch": "hold", "R_WRIST_roll": "hold"
        }
      }
    ]
  }
}
