🚗

自動運転AIチャレンジの描画ありシミュレータをWSL2上で動かしてみた[失敗編]

に公開

はじめに

自動運転チャレンジとは・・・

本大会は、CASE、MaaSと呼ばれる新たな技術領域において、これからの自動車業界を牽引する技術者の発掘育成のための新たな取り組みとして実施しています。
決勝大会では自動走行モビリティに開発したプログラムを搭載させる走行競技まで行います。
両大会合わせて、コンピューターサイエンス、AI、ソフトウェアや情報処理に関わる技術者・研究者・学生等のチャレンジの場、また学習及機会を提供し、有機的な繋がりを実現する場を目指します。

自動運転初学者の方でも参加しやすいような大会づくりを心掛けていきますので、どうぞ奮ってご参加ください。

と、公式HPで説明されています。
引用)公式HP About - 自動運転AIチャレンジとは より
https://www.jsae.or.jp/jaaic2025/about/

この自動運転AIチャレンジでは、既に必要なソフトウェア一式が既に準備されており、誰でもダウンロードして試してみることができるものとなっております。
ソフトウェアを各自PCでセットアップすることで環境構築ができ、すぐに開発に取り組めるようになっています。
ただ、この環境構築に少し壁があり、動作環境としてネイティブ環境のUbuntu22.04を使うように指定されています。
シミュレータの描画ありパターンだとGPUも要求されるため、場合によってはマシンの準備・購入というところが大きなハードルになってしまいます。

WSL2環境を使って有効活用できないかを試す

・・・ということでWindows環境ならWSL2がありますし、WSLgでLinuxのGUIアプリも描画できるので描画ありのパターンも動かせるのでは?と思い、今回はWSL2で描画ありパターンの環境を構築してみました。

まず結論から

ROSの方は起動しましたが、Unityで作られた3Dシミュレーターは起動しませんでした。

動かない状況について

Unityシミュレーターのウインドウは表示されますが内側の描画領域が全部ピンク色で表示されてしまいます。

ちなみにRVizは起動しており、ROSと通信してシミュレートした情報を受け取っている様子です。

シミュレータ画面が動かない原因を追ってみる

WSL2のUbuntuおよびその中で動いているDocker環境でも、下記のようにnvidia-smiコマンドを実行すると・・・

$ nvidia-smi

上記のコマンドを実行し、GPUが認識しているかを確認

Fri Aug  1 17:37:31 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 575.64.04              Driver Version: 577.00         CUDA Version: 12.9     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 4070 ...    On  |   00000000:01:00.0  On |                  N/A |
|  0%   38C    P8             15W /  285W |    1398MiB /  16376MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A              24      G   /Xwayland                             N/A      |
+-----------------------------------------------------------------------------------------+

コンテナ側でもGPUは認識しているようです。

レンダラーが原因?

コンピューター上に作成されたデータを視覚的な情報としてディスプレイなどの装置に出力する処理を行うソフトウェアの事をレンダラーと呼びます。
恐らく、GPUなどを使うハードウェアレンダリングや、CPUを使ったソフトウェアレンダリングという言葉を聞いたことがあるかと思いますが、今回は使いたいのは前者になります。

glxinfoでレンダラーを確認する

レンダラーの確認にはglxinfoコマンドを使用します。

sudo apt update
sudo apt install mesa-utils

レンダラーを確認するコマンド

glxinfo -B

WSL2上で使用されているレンダラー


こちらは、D2D12(NVIDIA GeForce RTX 4070 Ti SUPER)とGPUが使われているのが確認できます。

WSL2上の自動運転チャレンジ用のコンテナ上で使用されているレンダラー


WSL2上での表記と変わりまして、llvmpipe (LLVM 15.0.7, 256 bits)となっています。
このllvmpipeとは、ソフトウェアレンダラーとの事です。

という事で、コンテナ上でGPUは認識しているものの、ソフトウェアレンダラーが使用されていることが分かりました。レンダラーを指定して切り替える方法があるとのことで試してみたものの、エラーになってしまい、切り替えることができませんでした。

さいごに

今回はシミュレーターまで動かすことができず失敗談となりましたが、WSL2上のコンテナ内でもホストのGPUを認識している事や、レンダラーの違いについての知識を得られたのは良かったと思います。
ただし、自動運転AIチャレンジの開発環境を整えることを目的とするなら、素直にネイティブなUbuntuが動くマシンを準備することをおすすめします。

ヘッドウォータース

Discussion