Skip to content

docs: shorten the README and move the details to docs/ - #26

Merged
T-K-233 merged 9 commits into
mainfrom
docs/readme-rewrite
Oct 12, 2026
Merged

T-K-233 merged 9 commits into
mainfrom
docs/readme-rewrite

Conversation

@T-K-233

@T-K-233 T-K-233 commented Oct 11, 2026 •

Copy link
Copy Markdown
Member

Rewrites the README for users of the description, moves the maintainer details to docs/, and fixes the problems that a review of the repository found.

Docs

  • README: 170 → 108 lines. It has an image of each variant (visual meshes and colliders), the variants table, the use from Python and ROS 2, a static viewer script, the conventions and the design notes.
  • Design notes: the geometry is for simulation, and the CAD serves renders. Each variant has one collider set, and a biped consumer selects colliders by name at load time. The URDF cylinders are shorter than the MJCF capsules: the left_knee_pitch collider is 0.304 m against 0.392 m. Isaac Lab 3.0 removed replace_cylinders_with_capsules, so the docs give no workaround.
  • docs/: colliders.md, ros2_control.md and generation.md hold the old README sections, the xacro args, the differences between the backends, the contact model, the collider editing steps and an mjlab feet-only CollisionCfg example.
  • Images: python -m lite_description.workflow.render_images renders docs/images/ through a new docs dependency group. The published package gets no new command and no Pillow.
  • Install URL: berkeley-humanoids/lite_description. The old URL works only through the GitHub redirect.

Fixes

  • Delete two lite meshes that no model references, and clear meshes/visual/ on export. The mesh test now checks both directions.
  • package.xml 0.0.2 → 0.5.0, to match pyproject.toml. A test checks the match.
  • lite and lite_pro MJCF: implicitfast instead of the default Euler, as the MuJoCo docs recommend and the other variants use.
  • Delete 26 scad files that add no collider. The generated models do not change.
  • Biped scene floors: drop condim and friction, which were the MuJoCo defaults. mjlab trains on a plane with no contact attributes, so the floor now reads as the training plane. The compiled contacts do not change.
  • patch_contacts docstring: condim 1 makes only leg-leg contacts frictionless. A leg on the ground has friction, as in mjlab training.

Breaking: the old README anchors #usage, #hardware-backends, #re-generating-from-cad and #tests are gone.

The _comment in lite_biped/cad/ros2_control.json still says that mock hardware has the IMU block. The docs follow the generated xacro, which has no IMU block for mock hardware.

Verification

  • The Python snippets of the README and docs/colliders.md run. The viewer script opens the model.
  • The render script reproduces the committed images byte for byte.
  • uv run --group test pytest passes at each commit: 108 passed, 32 skipped (the xacro tests).
  • Each remaining scad file adds a collider, and each URDF collider has a scad source. OpenSCAD checked this.
  • Not run: the ROS 2 xacro command. A reviewer ran the mjlab example with mjlab 1.6.0.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FtY7D2vUc6McSBa1Kqq394

T-K-233 and others added 5 commits October 11, 2026 18:17
No lite model references waist_pitch_visual.stl or waist_yaw_visual.stl,
but both shipped in the wheel and the ament install. The export copied the
new meshes over the old ones, so a removed part left its mesh behind. The
mesh test now also fails on a mesh that the URDF does not reference.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FtY7D2vUc6McSBa1Kqq394
package.xml said 0.0.2 and pyproject.toml 0.5.0, so the conda package from
pixi-build-ros and the Python package had different versions. A test now
checks that the two match.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FtY7D2vUc6McSBa1Kqq394
Without an <option>, the two MJCFs used Euler. implicitfast is the
integrator that the MuJoCo docs recommend, and mjlab, the other variants
and most Menagerie robots use it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FtY7D2vUc6McSBa1Kqq394
onshape-to-robot drops the mesh collider of each part, and adds the shapes
of the scad file with the name of the part. 18 files matched no part, for
example the V1 leg colliders of lite_dummy. 8 wrist_yaw files had no
shapes, and the forearm file already tells why the wrist has no collider.
The generated models do not change.

In lite_dummy and lite_bimanual, the hand part has the name fingertip, so
its file keeps that name and now says so.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FtY7D2vUc6McSBa1Kqq394
The script is in workflow/ with the generator, and runs from a checkout
through the docs dependency group. Thus the published package gets no new
command and no Pillow.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FtY7D2vUc6McSBa1Kqq394
@T-K-233
T-K-233 force-pushed the docs/readme-rewrite branch from 0b0c944 to c87fda3 Compare October 12, 2026 01:18
T-K-233 and others added 4 commits October 11, 2026 18:41
The README keeps the variants, the usage and the conventions. The collider,
ros2_control and generator details move to docs/. The design notes state
the limits: simulation-grade geometry only, one collider set per variant,
and URDF cylinders against MJCF capsules.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FtY7D2vUc6McSBa1Kqq394
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FtY7D2vUc6McSBa1Kqq394
mjlab trains on a plane with no contact attributes. The floors set condim 3
and friction 1 0.005 0.0001, which are the MuJoCo defaults, so they already
matched. Without the attributes, the floor reads as the training plane and
nobody tunes it away from training. The compiled contacts do not change.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FtY7D2vUc6McSBa1Kqq394
condim 1 makes only leg-leg contacts frictionless. A contact with the ground
takes the larger condim of the two geoms, so a leg on the ground has
friction, as in mjlab training.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FtY7D2vUc6McSBa1Kqq394
@T-K-233
T-K-233 force-pushed the docs/readme-rewrite branch from c87fda3 to dbf4c0a Compare October 12, 2026 01:41
@T-K-233
T-K-233 merged commit e582f6b into main Oct 12, 2026
2 checks passed
@T-K-233
T-K-233 deleted the docs/readme-rewrite branch October 12, 2026 02:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant