74 lines
4.0 KiB
Markdown
74 lines
4.0 KiB
Markdown
# 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/<link>.py --3mf ../3MF/<link>.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`.
|