Skip to content

feat(rover): support WSL2 (Compose check, GPU rendering, networking docs) - #57

Merged
AksonovSergei merged 2 commits into
mainfrom
56-wsl-support
Nov 9, 2026
Merged

AksonovSergei merged 2 commits into
mainfrom
56-wsl-support

Conversation

@AksonovSergei

@AksonovSergei AksonovSergei commented Nov 9, 2026 •

Copy link
Copy Markdown
Member

Closes #56

What and why

Running the PC side on Windows (WSL2) did not work out of the box:

  • rover.sh: if docker compose is missing (Ubuntu's docker.io has no Compose v2 plugin), it now stops with a clear message and the install command instead of unknown flag: --rm. When /dev/dxg exists (WSL2), it uses the new pc-wsl service automatically. doctor shows WSL / WSLg.

  • docker-compose.yaml: new pc-wsl service (extends pc). It passes /dev/dxg, /usr/lib/wsl (ro) and /mnt/wslg into the container and sets LD_LIBRARY_PATH=/usr/lib/wsl/lib and GALLIUM_DRIVER=d3d12, so Gazebo/RViz render on the Windows GPU through Mesa's d3d12 driver (NVIDIA, AMD, Intel). MESA_D3D12_DEFAULT_ADAPTER_NAME is passed through when set, for laptops with two GPUs. On plain Linux nothing changes.

  • README: the Compose v2 requirement; a Windows (WSL2) section (WSLg, no Linux GPU driver or nvidia-container-toolkit in WSL, keep the repository in the WSL file system, mirrored networking and the Hyper-V firewall rule for the real robot); troubleshooting rows.

  • CONTRIBUTING.md: the Conventional Commits format is now recommended for the commit messages in a branch too (not checked by CI: the PR title becomes the squash commit in main).

  • CI names: workflows and jobs got descriptive names: PR / title and issue link, Images / build pc, Images / build robot, Images cleanup / clean up (job ids unchanged). These names are the required status checks of the main ruleset.

Repository settings: CONTRIBUTING.md and pr-rules.yml describe Squash and merge, but the settings allowed only Rebase and merge. A maintainer switches them in Settings → General → Pull Requests: enable Allow squash merging (message: Pull request title and description), disable Allow rebase merging.

How it was tested

Windows 11 (build 26300), WSL 3.0.3, Ubuntu 22.04, docker.io 29.1.3 + docker-compose-v2, GeForce GTX 1060:
./rover.sh deps works; glxinfo -B in the container shows D3D12 (NVIDIA GeForce GTX 1060 6GB), Accelerated: yes; the simulation runs. Mirrored networking is enabled (wslinfo --networking-mode), but the connection to a real robot is not tested yet.

  • simulation
  • real robot (overlay or branch image)

Checklist

  • One topic per PR
  • README / docs updated if the behaviour or the usage changed
  • Breaking change (topics, parameters, launch arguments used by applications) is marked with ! in the title

🤖 Generated with Claude Code

…ocs)

- rover.sh: fail with a clear message when `docker compose` is missing
  (instead of "unknown flag: --rm"); use the new pc-wsl service when
  /dev/dxg exists; doctor shows WSL/WSLg
- docker-compose.yaml: pc-wsl renders on the Windows GPU through /dev/dxg
  and Mesa d3d12 (NVIDIA, AMD, Intel)
- README: Compose v2 requirement, Windows (WSL2) section with mirrored
  networking for the real robot, troubleshooting rows

Refs #56

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CI keeps checking only the PR title, which becomes the squash commit in main.

Refs #56

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@AksonovSergei
AksonovSergei merged commit 454976e into main Nov 9, 2026
4 checks passed
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.

WSL2: rover.sh fails without Compose v2, Gazebo/RViz render on the CPU, no topics from the robot

1 participant