Skip to content

docs: restructure intro.rst, add JupyterLite deployment, rework README#551

Open
petercorke wants to merge 8 commits into
mainfrom
docs/intro-restructure
Open

docs: restructure intro.rst, add JupyterLite deployment, rework README#551
petercorke wants to merge 8 commits into
mainfrom
docs/intro-restructure

Conversation

@petercorke

Copy link
Copy Markdown
Owner

Summary

  • Restructure intro.rst into arm-robot / mobile-robot / spatial-math / history sections, with bibtex-backed citations (refs.bib, sphinxcontrib-bibtex).
  • Add a JupyterLite "Try it Now" in-browser deployment (docs/lite/), built by ci.yml from the release-asset wasm wheel, with all notebooks given a shared piplite-install-and-version-print first cell.
  • Rework the top of README.md (logo/tagline/badges), turn the citation section into a proper References section, and rewrite the wasm-wheel build docs to explain the CPython/Pyodide version-matching gotcha and point at the release asset first.
  • Fix a real qz-array-size bug in px150/rx150/rx200 (IndexError on print(robot)), fix a batch of repeated typos across IK/DHRobot/RobotKinematics/mobile docstrings, and record a spatialgeometry vendoring tech-debt item.
  • Includes fix(mobile): gate driveto()'s per-step print behind verbose flag, merged in from fix/driveto-unconditional-print (fix(mobile): gate driveto()'s per-step print behind verbose flag #550) — that PR can close once this merges.

Test plan

  • pytest tests/ -q — 594 passed, 72 skipped, no failures
  • docs && make SPHINXOPTS="--keep-going" html — build succeeded, same 4 pre-existing warnings, no new ones
  • Manually verified px150()/rx150()/rx200() construct and print without error
  • JupyterLite deployment manually tested working end-to-end in browser during development

🤖 Generated with Claude Code

petercorke and others added 8 commits July 5, 2026 22:17
VehicleDriverBase.driveto() printed an unconditional status line on
every call, unlike RandomPath._new_goal() right below it which
correctly gates its print behind self._veh.verbose or self._verbose.
Any simulation of more than a few steps floods stdout -- found while
building a runblock example for docs/source/intro.rst's planned Mobile
Robots section.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
These three 8-joint Interbotix arms (7-DOF + gripper) had qz sized as
np.zeros(7), one short of qr's 8 elements, causing an IndexError on
print(robot) / configurations_str(). rx200 had the same bug but was
missed by an initial partial review; verified all three now construct
and print cleanly.
contrained -> constrained, perfrom -> perform, instad -> instead,
psuedo -> pseudo, calculcates/Hessisan -> calculates/Hessian,
betwee -> between, and a duplicated "the the" in PlannerBase.plot's
docstring (surfaced under DstarPlanner in the built docs since it
inherits the method).
Reorganize intro.rst so arm-robot and mobile-robot content each get
their own section (was one flat ICRA2021-paper-derived narrative),
move the SMTB intro and history to the end, and add a new tested
"Mobile robots" tutorial section. Convert citations from `.. [Label]`
blocks to sphinxcontrib-bibtex `:cite:` roles backed by a new
refs.bib. Also fixes blockname.py's hardcoded, wrong-branch GitHub raw
URL for block-diagram icons in favour of a relative _static/ path.
Adds a docs/lite/ JupyterLite site built by ci.yml's docs-build job:
fetches the cp312 wasm wheel already attached to each GitHub release
(release.yml cross-compiles it via cibuildwheel, cp312 matches the
jupyterlite-pyodide-kernel version pinned below), syncs and adapts
docs/notebooks/*.ipynb into it, and deploys alongside the existing
Sphinx docs on GitHub Pages.

jupyterlite-pyodide-kernel is pinned to 0.6.1 deliberately: newer
versions bundle a newer Pyodide runtime than the cp312 wheel targets,
which manifests as a silent in-browser hang rather than a build error.

Also:
- give URDF_file a friendly, Pyodide-specific error when
  robot_descriptions' git-clone-based loading can't work in the
  browser sandbox, instead of a raw GitPython traceback
- prepend a single piplite-install-and-version-print cell to every
  notebook's first cell (works unchanged in regular Jupyter too)
- fix the Makefile's wheel-pyodide target/check to build and verify
  cp312 rather than a stale cp313 default
- fix pyproject.toml's `nb` extra (pytest-nbmake doesn't exist on
  PyPI; the real package is nbmake) and add nbmake to `dev`, which a
  comment falsely claimed already included it
- Replace the old table-based header with a centred logo, two-line
  tagline, JupyterLite/PyPI/Docs badges, and a quick-links row;
  regroup existing badges under Status & Ecosystem / Powered by.
- Turn "Toolbox ICRA Paper and Citation Info" into a References
  section with key papers, talks, and a related-book link; note why
  the Contents list stays a manually maintained TOC (this file also
  serves as PyPI's project description, which has no TOC widget).
- Rewrite the wasm-wheel build section: explain what Pyodide is and
  why its CPython/version tag has to match the JupyterLite deployment
  consuming it, point people at the release asset (what CI itself
  uses) rather than building locally by default, and fix the stale
  cp313/PYODIDE_VERSION=0.28.3 example now that this repo's deployment
  targets cp312 and Pyodide's own versioning scheme has since changed.
…install

src/spatialgeometry is vendored as a pure-Python copy inside this repo
(to drop the NumPy-1-compiled-extension dependency), but ci.yml
separately pip-installs the real external spatialgeometry from git
under the same import name -- likely a no-op once RTB's own wheel
installs afterwards. Records the ownership decision still needed:
drop the redundant CI install, or un-vendor and get a real
NumPy-2-compatible spatialgeometry release published to PyPI.
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