- Shell 58.3%
- Dockerfile 41.7%
|
Some checks failed
Docker Build and Push / docker (push) Failing after 1h38m42s
|
||
|---|---|---|
| .forgejo/workflows | ||
| gomi | ||
| scripts | ||
| .dockerignore | ||
| .gitignore | ||
| build.sh | ||
| compose.yml | ||
| Dockerfile | ||
| down.sh | ||
| entrypoint.sh | ||
| in.sh | ||
| pushimage.sh | ||
| README.md | ||
| supervisord.conf | ||
| up.sh | ||
| xorg.conf | ||
Run CARLA and ROS2 (Jazzy) in Docker Container
Docker 上で CARLA を実行します。 noVNC を使用することで、Web ブラウザから操作できます。
ホストの要件
以下を満たす NVIDIA GPU 対応 Docker サーバーが必要です。
1. Docker の NVIDIA Runtime 設定
cat /etc/docker/daemon.json
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
2. Vulkan ICD ファイル
ホストで以下のファイルがあること。nvidia_icd以外は、carlaは、動かない模様
/usr/share/vulkan/icd.d/nvidia_icd.json
本手順は Ubuntu 24.04 で検証しています。
3. GPU対応サーバーのセットアップ
以下をインストールします。
cuda-toolkit nvidia-docker2
ログイン後、以下を実行して GPU が認識されることを確認します。
ログインしてnvidia-smiを実行して、GPUが検出されることと、入っているドライババージョンを確認
2. docker imageのビルドと実行
クローン
# cd /opt
# git clone https://forgejo.ikko-lab.k.hosei.ac.jp/ikko/carla9.git
基本、ビルドイメージは、スクリプトでpullできるのでbuild.shは、不要、ビルドは、マシンにもよるが、1から2時間程度かかる。
# cd carla9
# ./build.sh
実行
# ./up.sh
WARN[0000] Warning: No resource found to remove for project "carla9".
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] n
ここで、Yとすると、docker system prune -aが動くため、 使っていないDocker image,volume,networkが全部削除されるので注意。
NVIDIA GPU を検出しました。NVIDIA runtime を使用します。
GPU = all
runtime = nvidia
libgl = 0
ICD file = /usr/share/vulkan/icd.d/nvidia_icd.json
noVNC ブラウザ経由でアクセス。
- noVNCを使用したブラウザからのアクセスは、ポート6080を使用。パスワードは、kobaken
http://192.168.100.220:6080
CARLA demo
noVNCに接続
httpsでは、接続できないので注意 資格情報 パスワードは、kobaken
ターミナルを開く
マウス右クリックで、[Open in terminal] としてmを実行
kbkn@u220-24:~/Desktop$ m
kbkn@u220-24:~/Desktop/scripts$ ls
reboot.sh runrviz2.sh setTown02.sh setTown05.sh
runcarla.sh setros2.sh setTown03.sh
runros2.sh setTown01.sh setTown04.sh
kbkn@u220-24 :~ /Desktop/scripts$
runcarla.sh
/opt/carla/PythonAPI/examples/manual_control.pyを実行
kbkn@u220-24 :~ /Desktop/scripts$./runcarla.sh
Pで自動運転 ちなみに、manual_control.pyには、syncモードがある。 デフォルトのasyncモードで、python3 generate_trafic.pyを実行すると、すぐに事故を起こすので、 syncモードにする。(確認しながらシミュレーションをするのでフレームレートが遅くなる)
動的天候の変更
File->New Tabでターミナルを開いて
kbkn@u220-24 :~ /Desktop/scripts$ cd /opt/carla/PythonAPI/examples
kbkn@u220-24 :/opt/carla/PythonAPI/examples$ ./dynamic_weather.py
Sun(alt: 32.83, azm: 163.08) Storm(clouds=0%, rain=0%, wind=5%)
Sun(alt: 32.87, azm: 163.10) Storm(clouds=0%, rain=0%, wind=5%)
Sun(alt: 32.90, azm: 163.13) Storm(clouds=0%, rain=0%, wind=5%)
・・・
人や車の追加
File->New Tabでターミナルを開いて
kbkn@u220-24:/opt/carla/PythonAPI/examples$ ./generate_traffic.py
ERROR: Spawn failed because of collision at spawn position
spawned 30 vehicles and 9 walkers, press Ctrl+C to exit.
ROS2 demo
ターミナルを開く
マウス右クリックで、[Open in terminal] としてmを実行または、 File->New Tabでターミナルを開く ちなみに、manual_control.pyで動かす車と、ROS2 demoで動いている車は、同一マップ内ではあるが、別の車
ROS domain IDのセット
ROS2でネットワーク内で連携したい場合に実行 ROS domain IDは、101としている。
kbkn@u220-24:~/Desktop/scripts$ ./setros2.sh
kbkn@u220-24:~/Desktop/scripts$
ROS2での車の起動
kbkn@u220-24 :~ /Desktop/scripts$ ./runros2.sh
INFO: Listening to server localhost:2000
INFO: Running ...
rviz2の起動
kbkn@u220-24 :~ /Desktop/scripts$ ./runrviz2.sh
kbkn@u220-24 :~ /Desktop/scripts$ ./runrviz2.sh
QStandardPaths: XDG RUNTIME DIR not set, defaulting to '/tmp/ru
ntime-kbkn'
[INFO] [1771805554.411140129] [rviz2]: Stereo is NOT SUPPORTED
[INFO] [1771805554.411226539] [rviz2]: OpenGl version: 4.6 (GLSL 4.6)
[INFO] [1771805554.454136347] [rviz2]: Stereo is NOT SUPPORTED
[INFO] [1771805554.584136337] [rviz]: Subscribing to: /carla/hero/lidar/point cloud
[INFO] [1771805554.616611144] [rviz]: Subscribing to: /carla/hero/lidar/point_cloud
[INFO] [1771805554.672006995] [rviz2]: Stereo is NOT SUPPORTED
Mapの変更
kbkn@u220-24 :~/Desktop/scripts$./setTown05.sh