When to Use
- First time entering the container in a fresh checkout.
- After pulling new commits that touched any package under
source/geniesim_ros/src/ros_ws/src/. - After running
geniesim ros build cleanupand you want to rebuild from scratch. - Before invoking the
launch-sceneskill (itsros2 launch …step needs the workspace sourced).
Do not use for:
- Installing the wheel layout that ships with
pip install geniesim_ros— that's already built; justsourcethe install tree. - Building a Release wheel for deploy → use
geniesim deploy geniesim_ros.
Critical Patterns
- Run inside the container. The colcon toolchain and rosdep tree live in the Isaac Sim + Jazzy image; outside the container the build will pick up the wrong Python / Boost / Eigen.
- Dev vs Release.
geniesim ros build devproduces aRelWithDebInfo+--symlink-installoverlay at./devel,./devel_build,./devel_log(intentionally namespaced so they can't collide with a release build under./install).geniesim ros build releaseis for deploy, not for iteration. - Always
source devel/setup.bashafter building. The shell environment doesn't carry the overlay automatically. - rosdep first if anything fails. Missing apt-side dependencies
are the #1 source of "package not found" build errors — run
geniesim ros doctorbefore re-trying the build.
Workflow
Step 1 — Confirm you're inside the container
geniesim status # should report all distributions OK
echo $ROS_DISTRO # should print "jazzy"
If $ROS_DISTRO is empty, you're on the host — geniesim docker into
first.
Step 2 — (optional) Repair rosdep
geniesim ros doctor # check & fix rosdep deps
Step 3 — Build
cd /workspace # repo root (mounted by `geniesim docker up`)
geniesim ros build dev # RelWithDebInfo + symlink-install -> ./devel
Iteration loop after editing C++ / xacro / launch files:
geniesim ros build dev # re-runs incrementally thanks to symlink-install
Step 4 — Source the overlay
source devel/setup.bash
Verify:
ros2 pkg list | grep genie_sim # should list the 10 genie_sim_* packages
Step 5 — Cleanup (only when something is wedged)
geniesim ros build cleanup # interactive prompt before removing devel*/build/install/log
Commands (copy-paste summary for the user)
# Inside the container, from the repo root:
geniesim ros doctor # optional — fix rosdep first
geniesim ros build dev # build the overlay
source devel/setup.bash # overlay the built workspace
ros2 pkg list | grep genie_sim # sanity check
Notes
geniesim ros buildis a thin wrapper aroundcolcon build— the same flags work if you call colcon directly, but the CLI sets the rightCMAKE_BUILD_TYPE, picks up$GENIESIM_WORKSPACE, and routes output to the namespaced./devel*dirs.geniesim ros graphwritescolcon graphtogeniesim_graph.pngin the cwd — handy when you need to reason about which packages pull in which.- The bundled workspace is also installed system-wide via
pip install geniesim_ros; that path is fine for running but not for iterating — every edit needs a rebuild, andpipwon't pick up a symlink-install layout.
Resources
- CLI dispatcher: source/geniesim_cli/src/geniesim_cli/commands/ros.py
- Workspace root: source/geniesim_ros/src/ros_ws/
- Package routing: source/geniesim_ros/AGENTS.md