#!/bin/bash
# One-command regenerate of the whole SO-100 parametric package (run ON LAB).
# Source of truth = so100_para.py (ROLLS, SPACERS, JOINTS). Bridges import it, so generate them first.
set -e
cd /data/cameron/repos/smith300_para_stuff
PY=/data/cameron/repos/cad_experiments/.venv_cad/bin/python
MJ=/data/cameron/repos/custom_robot_building/.venv/bin/python

echo "[1/4] printable bridge solids (yoke far-end -> next holder)"
$PY so100_bridge.py 2>&1 | grep -v Deprecation | grep -E "wrote|INVALID"

echo "[2/4] URDFs: floating (phase 1) + connected (phase 2)"
$PY so100_para.py            >/dev/null   # so100_para.urdf
$PY so100_para.py connect    >/dev/null   # so100_para_connected.urdf
echo "  wrote so100_para.urdf + so100_para_connected.urdf"

echo "[3/4] hero render"
MUJOCO_GL=egl $MJ render_arm.py so100_para_connected.urdf so100_hero.png 2>&1 | tail -1

echo "[4/5] self-collision: default pose"
$PY so100_check.py so100_para_connected.urdf 0.0 2>&1 | grep -v Deprecation | grep "q="

echo "[5/5] printability: printed parts watertight?"
$PY so100_printcheck.py 2>&1 | grep -v Deprecation | tail -1

echo "DONE. Viewer: cad.omidlab.net/?dir=/data/cameron/repos/smith300_para_stuff&file=so100_para_connected.urdf"
