はじめに
今年もAIchallemgeの季節がやってきました!!なんと,今回は自動運転レーシングということで決勝大会では,実際のレースが楽しめます!!参加していない方でもその様子を見ることができるので,ぜひ足を運んでみてください!!
実行環境
- Ubuntu 22.04
- Intel(R) Core(TM) i7-10875H CPU
- NVIDIA GeForce RTX 3070 GPU
今回は,最初に行ったステップとこれから行うことについてまとめることにします.
環境構築
基本的なセットアップについては,公式ドキュメントを参考に進めました.まずは,必要なパッケージをインストールしていきます.
sudo apt update
sudo apt install -y git python3-pip ca-certificates curl gnupg
次に,dockerをインストールします.
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER
以下のコマンドで,正常にdockerがインストールされたか,確認できます.
docker run hello-world
続いて,rockerというGUI付きのdockerを利用するのに便利なツールをインストールしていきます.推奨されているのはaptでインストールすることなのですが,pipでインストールしたほうがシンプルなのでそれに従ってインストールします.
pip install rocker
echo export PATH='$HOME/.local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
このあと,dockerのイメージをビルドするのですが,先に必要なdocker imageを取得していきます.
docker pull ghcr.io/automotiveaichallenge/autoware-universe:humble-latest
# 確認用
docker images
イメージの取得には時間がかかるので,その間に以下を進めておきます.まずは,aichallengeのレポジトリをクローンします.
cd ~
git clone https://github.com/AutomotiveAIChallenge/aichallenge-2024.git
次にクローンしたプロジェクト~/aichallenge-2024/aichallenge/simulator
に,シミュレータであるAWSIMをダウンロードして展開します.
以上の作業が問題なく完了していれば,ビルドを始めていきます.
cd ~/aichallenge-2024
./docker_build.sh dev
# イメージが作成されたことを確認してください
docker images
詳しい説明は省きますが,~/aichallenge-2024/aichallenge
におけるローカルの変更は,dockerに反映されるようになっているためコンテナを起動する前に開発用エディタを起動しておくと便利です.わたしは,vscodeを使用しているのでcode .
をコンテナ起動前に実行しました.
コンテナの起動 ・ 実行
無事にビルドが終了したので,実際にコンテナを起動します.
./docker_run.sh dev cpu
問題なければコンテナに入れるはずです.ls
と打って出力が変わっていたら成功しています!次に以下を実行し,autowareをビルドします.
cd /aichallenge
./build_autoware.bash
ビルドするのは,初回時とソースコードを追加,変更した場合に実行すれば問題ないです.yamlやlaunchを変更した場合はビルドしなくても問題ないです.
以上が完了すれば,autowareを無事に動かせると思います!以下のコマンドで確認できます.
# 実行&評価
./run_evaluation.bash
./run_evaluation.bash
を実行すると,~/aichallenge-2024/output
の中に走行動画やrosbagが記録されると思います.しかし,毎回記録を取ると容量をすぐに圧迫したりするので,公式のように,ターミナルを三つ起動して実行確認するのが良いと思います.もし,1つのターミナルで実行したい場合のスクリプト例を以下に示しておきます.
#!/bin/bash
AWSIM_DIRECTORY=/aichallenge/simulator/AWSIM
# shellcheck disable=SC1091
source /aichallenge/workspace/install/setup.bash
sudo ip link set multicast on lo
sudo sysctl -w net.core.rmem_max=2147483647 >/dev/null
# Start rqt
echo "Start rqt"
rqt >/dev/null &
PID_RQT=$!
# Start AWSIM
echo "Start AWSIM"
$AWSIM_DIRECTORY/AWSIM.x86_64 >/dev/null &
PID_AWSIM=$!
sleep 10
# Start Autoware(sleep時間は任意の時間に変更)
echo "Start Autoware"
ros2 launch aichallenge_system_launch aichallenge_system.launch.xml >autoware.log 2>&1 &
PID_AUTOWARE=$!
sleep 15
# Start driving and wait for the simulation to finish
echo "Waiting for the simulation"
ros2 topic pub --once /control/control_mode_request_topic std_msgs/msg/Bool '{data: true}' >/dev/null
wait $PID_AWSIM
また,たまに連続実行するとうまく動作しない場合があります.その場合はコンテナを起動し直すか,以下のようなterminate.bash
を作成すると良いかもしれません.
#!/bin/sh
for i in $(seq 2 100000)
do
kill ${i}
done
まとめ
今回は,環境構築を軽くまとめてみました.もうすでに,周回できているのでこれからは,時間を短くすることに集中したほうが良さそうです.今後の方針として以下がありますが次回以降は,その方針に沿ったものをまとめていこうと思います.ここまでありがとうございました.
これからの方針
- 何が起動されていてどのように作用しているか確認
- パラメータの最適化
- ルートの最適化