- Dockerfile 50.6%
- Shell 49.4%
|
All checks were successful
Docker Build and Push / docker (push) Successful in 14s
|
||
|---|---|---|
| .forgejo/workflows | ||
| scripts | ||
| .dockerignore | ||
| .gitignore | ||
| build.sh | ||
| compose.yml | ||
| Dockerfile | ||
| down.sh | ||
| in.sh | ||
| pushimage.sh | ||
| README.md | ||
| session.conf | ||
| supervisord.conf | ||
| up.sh | ||
Run Carla and ROS2(jazzy) in docker container
Docker上でCarlaを動かす。
noVNCを使うことでWebブラウザ上で実行可能
ホストの要件
Nvidia GPUカードが認識できるDockerサーバー ホストで以下の設定がされていることと、
cat /etc/docker/daemon.json
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
ホストで以下のファイルがあること。
/usr/share/vulkan/icd.d/nvidia_icd.json
一応、
/usr/share/vulkan/icd.d/intel_icd.json
や
/usr/share/vulkan/icd.d/radeon_icd.json
でもビルドはできるが、動作しない。ここでは、OS Ubuntu 24.04 で検証
1. GPU対応サーバーのセットアップ
cuda-toolkitとnvidia-docker2をインストールする。
ログインしてnvidia-smiを実行して、GPUが検出されることと、入っているドライババージョンを確認
2. docker imageのビルドと実行
クローン
# cd /opt
# git clone https://forgejo.ikko-lab.k.hosei.ac.jp/ikko/carla9.git
基本、ビルドイメージがあるので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で動かす車と、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