# juno — compact humanoid robotics platform concept A sleek research-humanoid CAD concept with Unitree-G1-like proportions: ~1.40 m tall, athletic ready stance, exposed cylindrical actuator modules at every joint, warm-porcelain composite shells over graphite structure with machined-aluminum joint rims, coral-orange accents on repeated functional details (actuator hubs, toe/heel bumpers, head vents, fingertip pads), a gloss midnight-blue sensor visor displaying cyan pixel-grid eyes (Anki Cozmo style), and dexterous five-digit hands. Clean industrial design, no logos. ## Degrees of freedom (27 body DOF) | Group | Joints | DOF | | --- | --- | --- | | Each leg (x2) | hip yaw, hip roll, hip pitch, knee, ankle pitch, ankle roll | 12 | | Each arm (x2) | shoulder pitch, shoulder roll, shoulder yaw, elbow, wrist roll, wrist pitch | 12 | | Waist | yaw | 1 | | Neck | yaw, pitch | 2 | Hands add posed (cosmetic) finger articulation on top of the 27 counted DOF. ## Files - `juno.py` — build123d generator (`gen_step()`); authoritative source. Pose angles are module-level parameters; joints are authored as `cadpy.assembly.AssemblyHelper` revolute frames driven by those angles. Also exposes `gen_urdf()` / `gen_srdf()` for the robot description. - `juno_parts/` — part-builder package (sculpted segments, joint hardware, shared style library). Each builder returns an identity-location labeled compound in its part-local frame. `chain.py` is the shared kinematic chain/pose/limit spec used by both the CAD assembly and the URDF/SRDF generators; `description.py` emits the URDF/SRDF XML; `mass_props.py` holds baked CAD volume/COM/inertia/bbox data. - `juno.step` — generated STEP assembly (derived artifact). - `.juno.step.js` — CAD Viewer animation sidecar with four in-place gaits built on per-frame chain FK plus two-link leg IK around the baked athletic stance: `walkLoop` (march, planted stance feet), `strideLoop` (treadmill-style strides, stance foot slides flat on the ground), `runLoop` (flight phases, body bounce, toe-pivot push-off, pumping bent arms, forward lean), and `jumpLoop` (countermovement hop with hands overhead and an underdamped springy landing). All gaits share antiphase arm swing, torso counter-sway, and head stabilization. Three showpiece loops: `danceLoop` (Elvis: right finger pointing up to the right, left leg kicked out to the left on a shaking planted toe via closed-form lateral+sagittal leg IK), `handstandLoop` (toe-pivot fold to a palms-flat inverted hold, whole-body root rotation with per-frame toe/palm contact anchoring), and `kickLoop` (chambered karate front kick behind a fists-up guard). Controls: `phase`, `gait`, `strideLength`, `legLift`, `armSwing`, `torsoSway`. Occurrence refs `#o1.1..#o1.28` follow the `asm.add` order in `juno.py`. - `juno.urdf` — generated URDF (derived artifact): a frame-only `base_footprint` ground root plus 28 physical links and 27 revolute joints (zero pose stands with soles on z = 0), per-link 3MF mesh visuals, bbox collisions, CAD-derived inertials at an assumed 35 kg total mass. - `juno.srdf` — generated MoveIt2 SRDF (derived artifact): limb/torso/head planning groups, hand end effectors, disabled collisions, and whole-body group states (`zero`, `athletic_ready`, `t_pose`, `wave_right`, `squat`). - `STEP/` — per-link wrapper sources (`gen_step()` per link) and their generated STEP parts; `3MF/` — per-link mm mesh sidecars referenced by the URDF. ## Conventions Units mm. Pelvis waist-yaw joint center is the world origin; +X forward, +Y robot-left, +Z up. Soles rest near z = -774 in the default stance. Regenerate with the CAD skill: `python scripts/step models/robots/juno/juno.py`. Regenerate link meshes per link with the CAD skill, e.g. `python scripts/step models/robots/juno/STEP/.py --3mf ../3MF/.3mf`. Regenerate the robot description with the URDF/SRDF skills: `python scripts/urdf models/robots/juno/juno.py=models/robots/juno/juno.urdf` and `python scripts/srdf models/robots/juno/juno.py=models/robots/juno/juno.srdf`.