Skip to content

ssik-demo-assets: vendor headline-arm meshes for true network-free demo #314

Description

@siddhss5

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions