1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NVIDIA GPUがない(Intel Arc搭載)Windows PCで自動運転AIチャレンジ2026を動かす手順メモ(WSL2 + Dozen)

1
Posted at

この記事は、NVIDIA GPUを搭載していないWindows PCのうち、Intel Arc GPUを搭載したPCで、自動運転AIチャレンジ2026のシミュレーション環境を動かしたときの手順メモです。

結論から言うと、私の環境では次の形で動きました。

  • make dev2: AWSIM GUIなし、RVizあり
  • make eval: AWSIM GUIなし、RVizありのbatch評価で6周完走
  • AWSIM自体はバックグラウンドで動く
  • 画面確認はRVizで行う
  • Intel Arc GPUをWSL2からMesa Dozen経由で使う

「NVIDIA GPUなしなら何でも動く」という話ではありません。この記事は、私のWindows のNote PC (Intel Arc 140T)で動いた非公式の手順メモです。

先に注意

公式の推奨環境はUbuntu 22.04です。

公式ドキュメントにも、WSLではヘッドレスモード、つまりシミュレータ画面表示なしで動かせるが、公式としては非サポートである旨が書かれています。

この記事の手順は、大会公式の保証手順ではありません。

Windows PCしか手元にない人が、学習・検証・記事化のために試すための記録です。

NVIDIA GPUあり記事との違い

以前、Windows + WSL2 + NVIDIA GPUあり環境の記事を書きました。

▼ NVIDIA GPUあり記事

この記事は、その続きとして「NVIDIA GPUがない場合にどこまでできるか」を確認したものです。

大きな違いは次です。

項目 NVIDIA GPUあり記事 この記事
GPU Nvidia RTX 3060 Intel Arc 140T
GPUの見せ方 NVIDIA Driver + NVIDIA Container Toolkit WSL2 /dev/dxg + Mesa Dozen
代表的な確認 nvidia-smi vulkaninfo --summary
Docker GPU設定 --gpus all / NVIDIA runtime系 /dev/dxg/usr/lib/wsl を渡す
AWSIM GPUありWSLgで表示・評価 AWSIM GUIは出さずbatch Vulkan

つまり、この記事の主題は「WSL2でGUIアプリを出す方法」ではなく、NVIDIA Container Toolkitを使わずに、Intel ArcをDozen経由でAWSIM/UnityのVulkan実行に使うことです。

image.png

この記事で目指す状態

目標はこの2つです。

  • make dev2: AWSIM GUIなし、RVizあり
  • make eval: AWSIM GUIなし、RVizありのbatch評価で6周完走

AWSIMはシミュレーション本体なので、評価やdev2では裏で動いています。ただし、UnityのAWSIMウィンドウは出しません。

make dev2 では、AWSIMを -batchmode -force-vulkan で動かし、走行状態はRVizで見ます。

make eval では、AWSIM GUI、capture、rosbagを切りつつ、ただしRVizは出し、評価中の状態を見られるようにします。

検証したPC

私が確認した環境です。

項目 内容
PC ASUS Zenbook14
CPU Intel Core Ultra 7 255H
GPU Intel Arc 140T GPU
メモリ 16GB
OS Windows + WSL2
WSL Ubuntu 22.04
WSL kernel 6.6.87.2-microsoft-standard-WSL2
Docker Docker Engine 29.6.1
Docker Compose v5.3.0
Mesa 25.0.7 kisak PPA
Vulkan driver Dozen

Intel N95 / Intel UHD Graphics系のmini PCでも、RViz起動までは確認できましたが、AWSIM評価完走までは確認できていません。この記事では未保証として扱います。

できたこと

私のZenbook14では、次を確認しました。

  • RVizがWindows側に表示される
  • make dev2 で2台分のAutowareが起動する
  • make dev2 でRVizが2枚出る
  • make eval のbatch評価が6周完走する
  • make eval でもRVizが出る
  • AWSIM GUIは出さずに、AWSIMはbatch Vulkanで動く

この記事では、環境構築が通ることを目的にします。

なぜNVIDIAなしでも動いたのか

今回のポイントは、WSL2上のLinuxアプリからWindows側GPUへ、Mesa Dozenを使ってVulkan経由でアクセスすることです。

ざっくり書くと、この経路です。

AWSIM / Unity
  -> Vulkan
  -> Mesa Dozen (dzn)
  -> Direct3D12
  -> Windows側 Intel Arc GPU

image.png

RVizはOpenGLで表示されます。一方、AWSIMはUnity製で、WSL上のOpenGL経路だと黒画面やマゼンタ画面になることがあります。

そこでAWSIMはGUI表示をやめて、-batchmode -force-vulkan で起動します。

公開リポジトリ

公式リポジトリをforkした公開ブランチを用意しました。

初心者向けには、このブランチをそのままcloneする方法が一番簡単です。

git clone -b docs/windows-wsl2-intel-dzn \
  https://github.com/iwatadive28/aichallenge-racingkart-wslg-dzn.git
cd aichallenge-racingkart-wslg-dzn

全体の流れ

作業の流れは次です。

  1. WindowsでWSL2 Ubuntu 22.04を用意する
  2. WSL内にDocker Engineを入れる
  3. WSLgとGPUブリッジを確認する
  4. Mesa Dozenを入れる
  5. DDS用のWSL設定を入れる
  6. 作業リポジトリを用意する
    • ルートA: 公開ブランチをcloneする
    • ルートB: 公式リポジトリをcloneして手動で変更する
  7. .envを設定する
  8. 公式のimage/AWSIMを準備する
  9. dev image / dzn派生image / Autoware workspaceをbuildする
  10. make dev2を実行する
  11. eval imageをbuildする
  12. make evalを実行する

1. WSL2 Ubuntu 22.04を用意する

PowerShellで確認します。

wsl --status
wsl -l -v

Ubuntu 22.04がなければ入れます。

wsl --install -d Ubuntu-22.04

WSLを更新して再起動します。

wsl --update
wsl --shutdown

Ubuntuに入ります。

wsl -d Ubuntu-22.04

Ubuntu側で確認します。

lsb_release -a
uname -a

2. Docker Engineを入れる

Docker Desktopではなく、WSL内のUbuntuにDocker Engineを入れます。

sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

Dockerのapt repositoryを追加します。

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Docker Engineを入れます。

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

ユーザーを docker groupに入れます。

sudo usermod -aG docker $USER

ここで一度WSLを閉じ、PowerShellから再起動します。

wsl --shutdown
wsl -d Ubuntu-22.04

確認します。

docker run --rm hello-world
docker compose version

3. WSLgとGPUブリッジを確認する

WSLgの表示先があるか確認します。

echo "$DISPLAY"
echo "$WAYLAND_DISPLAY"
ls /mnt/wslg

DISPLAY=:0 のような値が出ていればOKです。

Windows側GPUへのブリッジも確認します。

ls -l /dev/dxg
ls /usr/lib/wsl/lib/libd3d12.so

/dev/dxg がない場合、この手順ではAWSIMのVulkan/Dozen経路を使えません。

4. Mesa Dozenを入れる

Mesaの新しめのパッケージを入れるため、kisak PPAを使いました。

sudo apt install -y ppa-purge software-properties-common
sudo add-apt-repository -y ppa:kisak/turtle
sudo apt update
sudo apt install -y mesa-vulkan-drivers vulkan-tools libvulkan1 mesa-utils

DozenでGPUが見えるか確認します。

VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/dzn_icd.x86_64.json \
  vulkaninfo --summary

私の環境では次のように見えました。

deviceName = Microsoft Direct3D12 (Intel(R) Arc(TM) 140T GPU (8GB))
driverName = Dozen

llvmpipe しか出ない場合、GPU経路に乗っていません。

5. DDS用のWSL設定を入れる

ROS 2 / DDS用に、WSL側で以下を設定します。

sudo ip link set lo multicast on
sudo sysctl -w net.core.rmem_max=2147483647
sudo sysctl -w net.core.rmem_default=2147483647

これはWSLを再起動すると戻ります。make dev2make eval の前に毎回確認するのが安全です。

確認:

ip link show lo
sysctl net.core.rmem_max
sysctl net.core.rmem_default

loMULTICAST が付いていればOKです。

6. 作業リポジトリを用意する

ここは2通りあります。

早く試したい人は、ルートAの公開ブランチを使ってください。公式リポジトリから差分を確認しながら進めたい人は、ルートBで手動作成してください。

ルートA: 公開ブランチをcloneする

一番簡単なのはこちらです。

ただし、これは公式手順ではなく有志ブランチを使う方法です。動作確認の近道として使うくらいの位置づけにしてください。

mkdir -p ~/aichallenge-work
cd ~/aichallenge-work

git clone -b docs/windows-wsl2-intel-dzn \
  https://github.com/iwatadive28/aichallenge-racingkart-wslg-dzn.git

cd aichallenge-racingkart-wslg-dzn

ルートB: 公式リポジトリをcloneして手動で変更する

公式リポジトリをベースに、自分で必要なファイルを追加・変更する方法です。

mkdir -p ~/aichallenge-work
cd ~/aichallenge-work

git clone https://github.com/AutomotiveAIChallenge/aichallenge-racingkart.git
cd aichallenge-racingkart

この場合、以降の手順に進む前に、この記事の後半にある「この記事で変更していること」を見ながら、必要なファイルを手で作ります。

最低限見るべき差分は次です。

docker-compose.dzn.yml
Dockerfile.dzn
aichallenge/simulator_scripts/dev.sh
Dockerfile.eval.dzn
Dockerfile.eval.dzn.batchvulkan
docker-compose.eval.dzn.batchvulkan.yml
Makefile
Dockerfile
build_autoware.bash

公開ブランチは、手動で作るときの参考実装として見てください。丸ごと信用するのではなく、自分の環境で必要な変更だけ取り込むのが安全です。

7. .envを設定する

cp .env.example .env

.env を開いて、少なくとも以下を設定します。

ROS_DOMAIN_ID=1
HOST_UID=1000
HOST_GID=1000
COMPOSE_FILE=docker-compose.yml:docker-compose.dzn.yml

COMPOSE_FILE が重要です。

この指定により、通常のcompose設定に加えて、Dozen/Vulkan用の docker-compose.dzn.yml が読み込まれます。

ルートBで進める場合は、先に docker-compose.dzn.yml を作っておく必要があります。

8. 公式のimageとAWSIMを準備する

ここは基本的に公式手順と同じです。

./setup.bash pull image
./setup.bash download awsim

環境チェックもしておきます。

./setup.bash doctor

9. dev imageをbuildする

./docker_build.sh dev

Intel Arc / Dozen用の派生imageを作ります。

docker build -f Dockerfile.dzn -t aichallenge-2025-dev:dzn .

Autoware workspaceをbuildします。

make autoware-build

私の16GBメモリ環境では、ビルド並列数を落とさないと厳しかったため、公開ブランチではbuildを低並列にしています。

ルートBで公式リポジトリから手動で進める場合は、メモリ不足でbuildが落ちるなら、Dockerfilebuild_autoware.bash 側で並列数を落としてください。

10. make dev2を実行する

実行前にDDS設定を再投入します。

sudo ip link set lo multicast on
sudo sysctl -w net.core.rmem_max=2147483647
sudo sysctl -w net.core.rmem_default=2147483647

起動します。

make dev2

ルートAの公開ブランチ、またはルートBで同等の変更を入れた構成では、AWSIMは -batchmode -force-vulkan で起動します。

つまり、AWSIMのUnityウィンドウは表示されません。

一方で、Autoware側のRVizは表示されます。make dev2 では2台分なので、RVizが2枚出ます。

image.png

止めるとき:

make down

11. eval imageをbuildする

評価用imageはdev imageとは別です。

まず提出ファイルを作ります。

./create_submit_file.bash

公式の評価用imageをbuildします。

./docker_build.sh eval

このあと make eval を実行すると、ルートAの公開ブランチではMakefileが自動で Dockerfile.eval.dzn.batchvulkan を使い、Dozen/Vulkan用の評価imageを作ります。

ルートBで手動適用している場合は、同じ分岐をMakefileへ入れるか、手動で aichallenge-2025-eval:dzn-batchvulkan をbuildし、Dozen/Vulkan用のcompose overrideを指定して実行する必要があります。

12. make evalを実行する

実行前にDDS設定を再投入します。

sudo ip link set lo multicast on
sudo sysctl -w net.core.rmem_max=2147483647
sudo sysctl -w net.core.rmem_default=2147483647

評価を開始します。

make eval

ルートAの公開ブランチでは make eval が次のことをします。

  • Dockerfile.eval.dzn.batchvulkan から aichallenge-2025-eval:dzn-batchvulkan をbuild
  • docker-compose.eval.dzn.batchvulkan.yml を使って評価containerを起動
  • AWSIM evalを -batchmode -force-vulkan で起動
  • capture:=false
  • rosbag:=false
  • run_rviz:=true

つまり、評価時はAWSIM GUIは出さず、RVizだけを出します。

ここは make dev2 と役割が違います。

  • make dev2: 2台分のAutoware/RVizで挙動を見る
  • make eval: 評価用imageで6周完走できるか確認する

結果確認:

find output -name result-summary.json | sort | tail

例:

cat output/20260708-160658/d1/result-summary.json

finished=truelap_count=6 になっていれば完走です。

$ cat output/20260708-160658/d1/result-summary.json
{
    "schema_version": "v2",
    "session": {
        "required_laps": 6,
        "timeout": 600.0,
        "total_vehicles": 1
    },
    "vehicles": [
        {
            "vehicle_number": 1,
            "vehicle_name": "GoKart1",
            "final_position": 1,
            "finished": true,
            "lap_count": 6,
            "laps": [
                77.77189636230469,
                70.61083221435547,
                71.29045867919922,
                71.20550537109375,
                71.37541198730469,
                71.12554931640625
            ],
            "min_lap_time": 70.61083221435547,
            "max_lap_time": 77.77189636230469,
            "avg_lap_time": 72.22994232177735,
            "total_lap_time": 433.379638671875
        }
    ],
    "laps": [
        77.77189636230469,
        70.61083221435547,
        71.29045867919922,
        71.20550537109375,
        71.37541198730469,
        71.12554931640625
    ],
    "min_time": 70.61083221435547,
    "total_lap_time": 433.379638671875,
    "num_laps": 6
}

image.png

13. よくある詰まりどころ

AWSIMの黒い画面だけ出てRVizが出ない

通常の make eval や古い設定だと、AWSIM GUI側だけが見えることがあります。

この記事の目的は、AWSIM GUIを見ることではありません。

AWSIMはbatchで動かし、RVizで確認します。

ルートAの場合は、公開ブランチが正しいか確認してください。

git branch --show-current

期待:

docs/windows-wsl2-intel-dzn

.envCOMPOSE_FILE も確認します。

grep COMPOSE_FILE .env

期待:

COMPOSE_FILE=docker-compose.yml:docker-compose.dzn.yml

ルートBの場合は、ブランチ名ではなく、手動で作成した docker-compose.dzn.ymlDockerfile.eval.dzn.batchvulkandocker-compose.eval.dzn.batchvulkan.yml、Makefileの分岐が入っているかを確認してください。

make dev2でcontainer name conflictが出る

こんなエラーです。

Conflict. The container name "/aichallenge-racingkart-simulator-1" is already in use

前回のcontainerが残っています。

まずはこれ。

make down

それでも残る場合だけ、対象containerを消します。

docker rm -f aichallenge-racingkart-simulator-1

WSL再起動後にdev2が進まない

WSL再起動後はDDS設定が戻ります。

症状として、次のようなログが出ることがあります。

lo is not multicast-capable
failed to increase socket receive buffer size
rmw_create_node failed

再度入れます。

sudo ip link set lo multicast on
sudo sysctl -w net.core.rmem_max=2147483647
sudo sysctl -w net.core.rmem_default=2147483647

その後、起動し直します。

make down
make dev2

WSLがタイムアウトする

Windows側で次のようなエラーが出たことがあります。

Wsl/Service/CreateInstance/HCS_E_CONNECTION_TIMEOUT

まずPowerShellで試します。

wsl --shutdown

それでも戻らない場合は、PC再起動が一番確実です。

DockerやWSLが重くなった状態で make dev2 / make eval を何度も試すと起きやすい印象です。

llvmpipeになっている

AWSIMがCPUレンダリング側に落ちています。

確認:

VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/dzn_icd.x86_64.json \
  vulkaninfo --summary

期待:

driverName = Dozen
deviceName = Microsoft Direct3D12 (...)

AWSIM logで llvmpipeOpenGLCoreHDRP shader errorが出ている場合は、Dozen/Vulkan経路に乗っていません。

RVizがWindows側に出ない

まず、WSLgの基本確認をします。

sudo apt install -y x11-apps
xeyes

xeyes がWindows側に表示されない場合、RViz以前にWSLgの表示問題です。

私の環境では、一時的にRVizやxeyesのX11 windowは存在するのにWindows側に出ない状態がありました。最終的にはWindows側の表示・WSLg・リモートデスクトップ周りの問題として切り分け、ローカル画面で確認しました。

14. この記事で変更していること

公開ブランチでは、主に次を変えています。

ルートBで公式リポジトリから手動で進める場合は、この一覧をチェックリストとして使ってください。各ファイルの中身は公開ブランチを参考にできますが、自分の環境で不要な変更まで入れないように確認しながら進めるのが安全です。

  • docker-compose.dzn.yml
    • AWSIM devを -batchmode -force-vulkan で起動
    • /dev/dxg/usr/lib/wsl をcontainerへ渡す
  • aichallenge/simulator_scripts/dev.sh
    • AWSIM_BATCHMODE=1 のとき -batchmode を付ける
  • Dockerfile.eval.dzn
    • eval imageへMesa/Dozenを追加
    • eval時は capture=false
    • eval時は rosbag=false
    • eval時は run_rviz=true
    • AWSIM evalを -batchmode -force-vulkan で起動
  • Dockerfile.eval.dzn.batchvulkan / docker-compose.eval.dzn.batchvulkan.yml
    • Intel Arc環境で評価をGUIなしbatch Vulkanへ寄せる
  • Makefile
    • Dockerfile.eval.dzn.batchvulkan がある場合、make eval でDozen評価imageを使う
  • Dockerfile / build_autoware.bash
    • 16GBメモリPCでもbuildしやすいよう低並列化

image.png

まとめ

Intel Arc搭載Windows PCなら、WSL2 + WSLg + Mesa Dozenの組み合わせで、自動運転AIチャレンジ2026の環境を動かせる可能性があります。

ただし、現時点で私が確認できたのはIntel Arc 140Tの環境です。

Intel UHDやN95系mini PCでは同じように完走するとは限りません。検証できた環境が増えたら、この記事か別記事に追記していきます。

ポイントはこの3つでした。

  • AWSIM GUIは出さない
  • AWSIMはbatch Vulkanで動かす
  • dev2eval も、画面確認はRVizで行う

抜け漏れあるかもしれませんし、他の環境でも検証出来たり、うまくいかなかったら、コメントいただけると助かります。

Windows PCしか手元にない人が、自動運転AIチャレンジの環境に触る入口として参考になればうれしいです。

それでは、素敵な自動運転ライフを!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?