Context
pip install ssik[demo] (#310) gives users viser + yourdfpy + robot_descriptions, and the demo's preload_descriptions() runs in a background thread at launch. But robot_descriptions is just a directory of Python stubs that point into ~/.cache/robot_descriptions/; the actual URDFs and meshes are lazy git cloned from upstream the first time each *_description module is touched.
Concretely on a fresh user's machine:
pip install ssik[demo] adds maybe ~50 MB of Python deps. Fast.
- First demo launch silently triggers ~100s of MB of
git clone traffic into ~/.cache/robot_descriptions/. Fails if offline / behind firewall / no git. Pins are floating (upstream HEAD).
So the demo isn't actually network-free or version-pinned.
Proposal
Publish a sibling PyPI package ssik-demo-assets that vendors meshes for a curated "headline" arm subset:
| Arm |
Source repo |
Approx mesh size |
| UR5 (official) |
universal-robots/Universal_Robots_ROS2_Description |
~5 MB |
| KUKA iiwa14 |
IFL-CAMP/iiwa_stack |
~3 MB |
| Unitree Z1 |
unitreerobotics/z1_ros2 |
~10 MB |
| Franka Panda |
frankaemika/franka_ros |
~15 MB |
| Franka Research 3 |
frankaemika/franka_description |
~15 MB |
| Kinova JACO 2 |
personalrobotics/ada_ros2 |
~8 MB |
| FANUC CRX-10iA/L |
ros-industrial/fanuc |
~12 MB |
Total: ~70 MB. Pin URDF + meshes at known SHAs.
ssik[demo] depends on ssik-demo-assets. The demo's local_urdf_paths is extended to look at the assets-package install location first; falls through to robot_descriptions lazy fetch otherwise.
Benefits
pip install ssik[demo] becomes truly offline-capable for the curated subset.
- Reproducible: PyPI version pin == mesh SHA pin.
- No silent network on first launch.
- JACO 2 stops needing a local ada_ros2 checkout.
Costs
- ~70 MB sibling wheel, separately downloaded.
- New release/versioning cadence to maintain.
- License review per vendored repo (most are BSD/Apache; ada_ros2 is MIT).
Out of scope (cover later)
- Long-tail arms (Kassow, big_yam, Rizon 10, OpenArm) — add as PRs to the assets package.
- Mesh thinning / decimation if the package gets too big.
Decision needed
License check on the headline subset + agreement on the packaging cadence before this lands.
Filed as follow-up to #310 (demo polish PR).
Context
pip install ssik[demo](#310) gives users viser + yourdfpy + robot_descriptions, and the demo'spreload_descriptions()runs in a background thread at launch. Butrobot_descriptionsis just a directory of Python stubs that point into~/.cache/robot_descriptions/; the actual URDFs and meshes are lazygit cloned from upstream the first time each*_descriptionmodule is touched.Concretely on a fresh user's machine:
pip install ssik[demo]adds maybe ~50 MB of Python deps. Fast.git clonetraffic into~/.cache/robot_descriptions/. Fails if offline / behind firewall / nogit. Pins are floating (upstream HEAD).So the demo isn't actually network-free or version-pinned.
Proposal
Publish a sibling PyPI package
ssik-demo-assetsthat vendors meshes for a curated "headline" arm subset:Total: ~70 MB. Pin URDF + meshes at known SHAs.
ssik[demo]depends onssik-demo-assets. The demo'slocal_urdf_pathsis extended to look at the assets-package install location first; falls through torobot_descriptionslazy fetch otherwise.Benefits
pip install ssik[demo]becomes truly offline-capable for the curated subset.Costs
Out of scope (cover later)
Decision needed
License check on the headline subset + agreement on the packaging cadence before this lands.
Filed as follow-up to #310 (demo polish PR).