Native ROS setup
For the complete model → training → testing → export → Nav2 workflow, follow Your robot: from model to Nav2.
Target platform: Linux x86-64 with ROS 2 Jazzy and Gazebo Harmonic, installed by
pixi from RoboStack: no system ROS install,
apt, rosdep or source .../setup.bash is needed. The training environment and the
lightweight robot runtime are separate packages. Loading different policy weights must
not require a ROS rebuild.
Run the guided setup once:
pixi run setup
It offers the example robot, a new integration or a saved integration. Workspace answers
are stored in .dwarl/setup.env and active selections in .dwarl/context.json.
Gazebo integrations build DWARL's ros/ packages and the robot workspace against
pixi's ROS (into .pixi/robot/) and offer a live check. Rerun it to change the answers. For scripts and CI:
dwarl setup --robot-ws /path/to/robot --packages my_robot_dwarl --yes.
DWARL_ROBOT_WS / DWARL_ROBOT_PACKAGES in the environment override the saved answers.
The robot build leaves the robot repository's own build/ and install/ untouched, and building
only the integration package(s) keeps hardware-only packages (drivers, CAN stacks) out. DWARL loads
the robot overlay and then its own ros/install (its controller takes precedence) for every Gazebo
run, also right after a build in the same command. Robot runtime dependencies missing from the ros
feature in pyproject.toml can be added with pixi add --feature ros ros-jazzy-<package>.
Run pixi from a terminal without another ROS workspace sourced.
Gazebo testing and deployment with a launch adapter run incremental builds first.
The same preparation runs from task shortcuts and direct CLI commands inside pixi shell.
MuJoCo testing does not trigger a ROS build. Use pixi run build-robot for an explicit rebuild.
dwarl doctor --sim gazebo (also part of dwarl test --sim gazebo) warns about Gazebo servers left
behind by an interrupted DWARL test (they share ROS domains and CPU) and a powersave CPU governor.
pixi run test --sim both --case doorway
pixi run deploy /path/to/robot-repository
The robot's planner launch needs one initial integration-package build. Subsequent deployments update the source integration's selected-policy file and bundles; the symlink-installed launch reads that source location, so new weights need no rebuild.
Fresh-machine installation and broader Gazebo scoring validation remain experimental.
dwarl doctor --sim gazebo reports missing prerequisites.
The initial localization mode is simulation odometry with an explicit spawn-frame transform, not AMCL validation. Ground-truth scoring must be checked independently of the policy's odometry and scan inputs.
Ground truth uses Jazzy's Gazebo Transport 13 and Messages 10 Python bindings directly: the generic ROS Pose_V bridge does not preserve scene-pose model names. Each managed test owns a ROS domain lease and Gazebo partition, and starts a fresh stack per case.