# cad tasks

## smith300 + fidex + parametric (DONE 2026-06-23/24)
- [x] CAD viewer made permanent (no `--shutdown-after`), tmux `cadviewer` on lab, `cad.omidlab.net`. (Reboot-proof = put in fleet resume script, manager — TODO.)
- [x] General reusable **MJCF→URDF translator** `cad_experiments/mjcf_to_urdf.py`. smith300 → `smith300_para_stuff/smith300.urdf` (8 links/7 joints, gripper + aruco boxes), validated + rendered + in viewer.
- [x] Deep-read FiducialExoskeletons → abstraction notes [[fidex_notes]]. Aruco shows in viewer as positioned boxes (viewer doesn't serve png textures; GLB-quad bake = TODO).
- [x] **Parametric arm** `cad_experiments/param_arm.py`: link lengths are free params (orientations/directions fixed), parametric cylinder connectors + real sts3215 servos. Validated URDF; demoed default vs 1.5×. `param_arm.urdf`, `param_arm_x1.5.urdf`, `param_arm_compare.png`.
- [ ] NEXT: swap cylinder connectors → build123d parametric clamp/holder parts (real cross-section + aruco board pocket); add the 2-finger gripper as the end module; emit the fidex `LinkConfig` + board image per link from the same source; GLB-bake arucos for textured viewer display.

## Bootstrap (DONE 2026-06-23)

- [x] Read `ROLE.md` + `shared/GUIDELINES.md` + `inbox.md` + vault slice
- [x] Clone `cameronosmith/custom_robot_building` → `~/cad_repos/` (local; sshfs path failed)
- [x] Clone `earthtojake/text-to-cad` → `~/cad_repos/` (local)
- [x] Read both repos in depth (MJCF chain generator + CAD-Skills/build123d architecture)
- [x] Write current-state assessment + 6 questions for Cameron in `outbox.md`
- [x] Updated ROLE.md + vault to canonical `~/cad_repos/` workspace
- [x] Status → `idle`, awaiting Cameron's answers

## Design decisions ANSWERED by Cameron (2026-06-23)

- [x] **Compute + code:** ALL on lab (phe108). VPS = agent hosting + memory only. Run mujoco/build123d/generation on lab via `ssh phe108` (or hand to a lab agent). No heavy deps on VPS. → see [[code-lives-on-lab-2026-06-23]].
- [x] **build123d vs MJCF:** Opt for **build123d** now, sticking to text-to-cad's examples/conventions. Cameron prefers mujoco overall + hasn't tried build123d yet, but wants to try it. So: generate parts with build123d.
- [x] **Blender vs STL source-of-truth:** Keep OPEN. Working model: I generate a part → Cameron edits the STL in Blender (just geometry editing) → sends it back → I re-integrate. Don't over-build frame machinery yet.
- [x] **URDF vs MJCF:** Start **URDF** (canonical). MJCF needed eventually but considered easy to convert from URDF.
- [x] **6-DOF config:** It's the **default `long_singlejointed`** config (6 `WORLD_LINKS`, 6 hinges, `DEFAULT_JOINT_QPOS=[0,-1.5,1.5,0.75,0,0]`). Run: `cd 2ourso100 && ./gen_and_view.sh long_singlejointed`. (`just_eef_umi` is EEF-only.)
- [x] **STL handoff:** Keep STLs **on lab** (`/data/cameron/repos/custom_robot_building/...`); Cameron downloads to Mac or reads via sshfs. No agents_stuff handoff dir needed.

## Near-term (after bootstrap)

- [x] Reproduce the full 6-DOF arm (`long_singlejointed`) in MuJoCo on lab — DONE 2026-06-23. Pulled 6 missing STLs Mac→lab, loads nq=6/njnt=6, rendered baselines (`long_6dof_baseline.png`, `long_6dof_extended.png`). Lab render pipeline (uv venv + EGL offscreen) verified.
- [ ] Stand up a build123d env on lab (follow text-to-cad `cad` skill requirements/examples)
- [ ] First parametric part via build123d → STEP → STL (candidate: wrist camera mount); URDF-primary
- [ ] Redo Cameron's existing 6-DOF robot as a modular design (URDF-primary, build123d parts)
- [ ] Add wrist camera + other modular features
- [ ] Build a better UMI-style data-collection rig

## Conventions still to establish

- [ ] Branch strategy for `custom_robot_building` — feature branches per part?
- [ ] What level of MuJoCo simulation before "ready to print"?
- [ ] URDF↔MJCF conversion path (which tool; verify it round-trips Cameron's joint/frame conventions)
