概要
本記事では自動運転チャレンジ2023の決勝向けに公開されているデータを用いて, rosbagデータのreplayを実行してみた内容を記載します. rosbag はROSにおいて, publishされたtopicを記録しておき, オフラインで記録した内容を再生することにより、シミュレーション実験やテストを行うことができる機能になります.詳細はROSの公式ドキュメントをご覧ください.
環境
基本的に自動運転チャレンジ2023の予選と同じ環境を使用し, 環境構築は公式ドキュメントに従います.
1. rosbag データのダウンロード
公式ドキュメントの決勝についてのページから, "開発用rosbagデータダウンロードリンク"をクリックし, OneDriveのページにとびます.
次に格納されているLOGsimRosbag, SCurveRosbag, SmokeRosbagを選択しダウンロードします.ダウンロードが完了されたら, zipファイルを展開し, 任意のディレクトリに置きます.
ここでは例として, "~/rosbag/"に置いて展開するものとします.
cd ~/rosbag
unzip OneDrive_*.zip
2. 実行
2.1 Docker の起動
2.1.1 Docker コマンドの修正
自動運転チャレンジ2023のリポジトリに含まれるDockerを起動するのですが, Docker内に先ほどダウンロードした rosbag データをマウントする必要があるため, "aichallenge2023-sim/docker/run_container.sh"のDocker起動コマンドを修正します.
rocker --nvidia --x11 --user --net host --privileged --volume aichallenge:/aichallenge --volume ~/rosbag/:/rosbag/ -- aichallenge-train
ここでは, "--volume ~/rosbag:/rosbag/"により, Docker外の"~/rosbag/"をDocker内の"/rosbag"にマウントしています.
2.1.2 Docker の起動
下記で自動運転チャレンジ2023のリポジトリ内に移動します.
cd aichallenge2023-sim/
次に下記を実行し, Dockerを起動します.
cd docker/
bash run_container.sh
3. 実行
3.1 rosbag シミュレータの実行
2.1.2 で起動したDocker上で下記を実行し, rosbagシミュレータを起動させます.
sudo ip link set multicast on lo
cd /aichallenge/
bash build.sh
source aichallenge_ws/install/setup.bash
ros2 launch autoware_launch logging_simulator.launch.xml vehicle_model:=golfcart sensor_model:=awsim_sensor_kit map_path:=/aichallenge/mapfile
3.2 rosbag のリプレイの実行
別のShellを立ち上げ, 同様に2.1.2に従ってDockerを起動させ, 下記を実行し, rosbagを再生させます. 今回は例として, "LogsimRosbag"を再生します.
sudo ip link set multicast on lo
cd /aichallenge/
bash build.sh
source aichallenge_ws/install/setup.bash
ros2 bag play /rosbag/LogsimRosbag/ -r 0.2 -s sqlite3
4. 結果
rosbag のリプレイの実行後,rvizのステアリングが少し動き始め、数秒(15~20秒ぐらい)後に車両が動き始めます.下の画像では, 灰色の四角形が車両になり, その下の白い線が, 走行した軌跡になります.
実際に最後まで走行させた動画が以下になります.
まとめ
本記事では自動運転チャレンジ2023の決勝者向けに公開されたデータを用いて, rosbagデータのreplayを実行してみた内容を記載しました. rosbag データ内には、実際に取得したセンサデータのTopicが格納されているので, 今後は格納されていると思われるLiderのデータやカメラのデータの解析をしていきたいと思います.