Robotic Systems

Robotic Systems · teaching-draft · v0.2.0

Setup and reproducible workflow

Python with uv

Work in this course's repository. It has its own Python package, environment, and lockfile; the other course is not a dependency.

uv sync --locked
uv run --locked python practices/p01-integrators/run.py
uv run --locked pytest

Use Python 3.12 as recorded in .python-version. Core examples are headless CPU programs and do not require OpenGL, a viewer, or a GPU. Generated metrics and CSV traces go under outputs/. Keep each experiment's YAML file and output directory separate.

Install uv using Astral's instructions if it is not available. The dependency lock fixes the tested software; a successful install does not replace the course's numerical tests.

Optional environments

uv sync --locked --extra notebooks
uv sync --locked --extra mjx
uv sync --locked --extra comparison

Extras are optional and can be combined. MJX and Pinocchio comparisons live in the modeling course's Practice 7. Installing an extra does not mean every possible model feature or hardware backend has been tested.

Notes and slides

The site uses Eleventy, with Reveal.js and KaTeX served locally from the built site.

npm --prefix site ci
npm --prefix site run build
npm --prefix site run check
COURSE_PATH_PREFIX= npm --prefix site run dev

Local development uses port 8081. Production defaults to /robotic_systems/. Set COURSE_PATH_PREFIX to an empty string for root hosting, or to the actual deployment subpath. The generated static site is site/_site/.

Content ownership

Each lecture lives in modules//:

  • module.yml declares its stable ID, week, objectives, practice, and reference IDs.
  • notes.md contains explanations, derivations, worked examples, and exercises.
  • slides.md contains short Reveal sections separated by a line containing three hyphens.

Each practice contains practice.yml, config.yml, README.md, and run.py. Reusable Python functions live in src/robotic_systems/. course.yml holds course metadata, references/references.yml holds source records, and CITATION.cff supplies citation metadata.

YAML describes data and experiment parameters. Python still uses pyproject.toml and uv.lock, and Eleventy still needs a small JavaScript build configuration. These tool-native files are intentionally retained.

Editing and release

Changing notes, slides, or YAML rebuilds the local site. Restart the server after changing the hosting path prefix. Run tests and the site link check before release. This edition is a teaching draft; publication requires instructor review and an explicit deployment step. No DOI has been assigned.

See the course, notation, and source map.