自動運転AIチャレンジの rosbag データをReplay してみた

# 概要
本記事では自動運転チャレンジ2023の決勝向けに公開されているデータを用いて, rosbagデータのreplayを実行してみた内容を記載します. rosbag はROSにおいて, publishされたtopicを記録しておき, オフラインで記録した内容を再生することにより、シミュレーション実験やテストを行うことができる機能になります.詳細はROSの[公式ドキュメント](https://docs.ros.org/en/foxy/Tutorials/Beginner-CLI-Tools/Recording-And-Playing-Back-Data/Recording-And-Playing-Back-Data.html)をご覧ください.

# 環境
基本的に自動運転チャレンジ2023の予選と同じ環境を使用し, 環境構築は[公式ドキュメント](https://automotiveaichallenge.github.io/aichallenge2023-sim/setup/index.html)に従います.

# 1. rosbag データのダウンロード
公式ドキュメントの[決勝について](https://automotiveaichallenge.github.io/aichallenge2023-sim/finals/index.html)のページから, "開発用rosbagデータダウンロードリンク"をクリックし, OneDriveのページにとびます.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737512/63ea32d1-daff-bb99-0c0e-18c9d3a2f848.png)

次に格納されているLOGsimRosbag, SCurveRosbag, SmokeRosbagを選択しダウンロードします.ダウンロードが完了されたら, zipファイルを展開し, 任意のディレクトリに置きます.
ここでは例として, "~/rosbag/"に置いて展開するものとします.

```
cd ~/rosbag
unzip OneDrive_*.zip
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737512/cd1ed327-9776-270e-c0eb-adf9e6508cae.png)

# 2. 実行
## 2.1 Docker の起動
### 2.1.1 Docker コマンドの修正
自動運転チャレンジ2023のリポジトリに含まれるDockerを起動するのですが, Docker内に先ほどダウンロードした rosbag データをマウントする必要があるため, "aichallenge2023-sim/docker/run_container.sh"のDocker起動コマンドを修正します.

```docker/run_container.sh
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
```
少し待つと、下のようにrvizが起動します。
![Screenshot from 2023-09-26 21-47-17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737512/b981ec57-f959-dc8a-f544-03f6ee7de29c.png)

### 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秒ぐらい）後に車両が動き始めます.下の画像では, 灰色の四角形が車両になり, その下の白い線が, 走行した軌跡になります.
![Screenshot from 2023-09-26 21-52-09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2737512/377153a7-ea26-bb43-aa5e-35a531a0c8d2.png)

実際に最後まで走行させた動画が以下になります.

<iframe width="560" height="315" src="https://www.youtube.com/embed/WUyjkvYKdt0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

# まとめ
本記事では自動運転チャレンジ2023の決勝者向けに公開されたデータを用いて, rosbagデータのreplayを実行してみた内容を記載しました. rosbag データ内には、実際に取得したセンサデータのTopicが格納されているので, 今後は格納されていると思われるLiderのデータやカメラのデータの解析をしていきたいと思います.