*_ws/are independent ROS2 workspaces. Each containsdocker/compose.yaml,docker/Dockerfile,.devcontainer/, andsrc/(ROS2 packages built with colcon inside the container).docker_modules/holds shared install scripts that are hard-linked into each workspace via./scripts/post_install.sh.docs/is MkDocs content, including per-workspace docs underdocs/<workspace-name>/.scripts/contains setup helpers (e.g.,post_install.sh,create_workspace.sh).tests/contains lint-style checks for compose files, Dockerfiles, MkDocs, and workspace templates.
./scripts/post_install.sh(or-fto force): refreshes docker module hard links; run after any repo change or branch switch../scripts/enable_module.sh <MODULE>: enable a module in the current workspacedocker/compose.yaml(prompts for workspace/module selection if needed).cd <workspace>/docker && docker compose build: builds the workspace image.cd <workspace>/docker && docker compose up -d: starts containers in the background.cd <workspace>/docker && docker compose exec <service> bash: opens a shell in the container../scripts/create_workspace.sh <new_workspace_name>: scaffolds a new workspace fromtemplate_ws../tests/test_all.sh: runs linting scripts for structure and config validation.
- Workspaces must follow the
*_wsnaming pattern. - Use
docker/compose.yaml(notcompose.ymlor other variants). - Keep required default files in each workspace:
.devcontainer/devcontainer.json,docker/Dockerfile,docker/compose.yaml,src/, andREADME.md. - Prefer USDA over USD for Omniverse/Isaac assets where possible.
- Primary checks are Python-based lint scripts executed via
./tests/test_all.sh. lint_comp_template.pytreatstests/diff_base/as the canonical baseline; whentemplate_wsintentionally changes, updatetests/diff_base/and sync other workspaces as needed. Do not use{PLACEHOLDER_MULTILINE}in the baseline templates unless the user explicitly asks for it.- You can skip workspaces by setting
IGNORED_WORKSPACES(e.g.,export IGNORED_WORKSPACES="tmp_ws").
- Open and self-assign a GitHub issue before starting.
- Branch naming:
feat/<name>orfix/<name>. - Commit messages must follow Conventional Commits and include rationale and sources when relevant.
- When
template_wschanges require syncing other workspaces, make a separate minimal "unify" commit (preferred message:feat: Unify workspaces style). - If code/content is copied, include source and commit permalink in the commit message.
- Add
Co-authored-bylines for contributors who helped; avoid force-pushes once review starts.
- Set
export USER_UID=$(id -u)on the host to match container user permissions. - Enable/disable modules via
build.argsindocker/compose.yaml(e.g.,CARTOGRAPHER=ON).