日本語 | English
本リポジトリでは第3回自動運転AIチャレンジの参加者のための環境構築手順・大会ルール等、大会参加のために必要なデータを提供しています。
本大会の競技内容・ルールについてはRULE.mdで確認お願いいたします。
本大会ではAutoware.Autoをベースとして自動走行の実装を行っていただきます。Autoware.Autoのチュートリアルを下記リンクに用意いたしましたのでご参考にしてください。
- Introduction to Autoware.Auto for AI Challenge competitors (pdf)
- Introduction to Autoware.Auto for AI Challenge competitors (youtube)
この度は第3回自動運転AIチャレンジへのご参加をいただきありがとうございました。 今後のスケジュールについて競技オフィシャルサイトに掲載致しましたのでご確認下さい。 https://www.jsae.or.jp/jaaic/result.html
競技は12月22日、17時をもって終了となります。(22日16時59分59秒以前にアップロードされたシミュレーションは有効です) 暫定ランキングは2022年1月17日に公開、1月21日17時をもって確定致します。 競技結果に対する疑義は上記公開より確定までの間のみ受け付け致します。 最終ランキングは1月28日に公開となります。
フォローアップチュートリアルとして、12月24日より2022年1月17日まで特別協賛のzero to one社提供の自動運転構築エンジニアリングコースの一部をご提供いたします。 参加はエントリーをいただいたチーム、チームメンバのみとなります。 参加方法等別メールにてご案内致します。
尚、表彰式は2022年2月下旬~3月上旬、メタバースにおける表彰式を予定しています。 表彰式詳細は改めてご連絡致します。
本大会で使用していただくPCの動作環境として以下を推奨しております。
- OS: Ubuntu 20.04
- CPU: Intel Corei7(8コア)以上
- GPU:
- NVIDIA Geforce RTX2080(GTX1080Ti)以上(GPU実装のあるROSノードを実装する場合)
- NVIDIA Geforce GTX1080以上(GPU実装のあるROSノードを実装しない場合)
- メモリー: 32GB以上
- ストレージ SSD 30GB 以上
上記のスペックのPCが用意できない場合、LGSVLシミュレータ動作PCとAutoware動作PCを分けて用意していただくことも可能です。環境はそれぞれ以下を推奨しております。
- OS: Ubuntu 20.04もしくはWindows 10
- CPU: Intel Corei7(4コア)以上
- GPU: NVIDIA Geforce GTX 1080 以上
- メモリー: 16GB以上
- ストレージ SSD 20GB 以上
- OS: Ubuntu 20.04
- CPU: Intel Corei7(4コア)以上
- GPU: NVIDIA Geforce GTX 1080 以上(GPU実装のあるROSノードを実装しないのであればGPUは不要です)
- メモリー: 16GB以上
- ストレージ SSD 10GB 以上
本大会でのROS2の実行環境はDockerコンテナ内に構築します。
事前に
Got permission denied while trying to connect to the Docker daemon socket at ...
のインストールを行ってください。
事前にgit lfsをインストールしてください。
sudo apt install git-lfs
git lfs install --skip-repo
git clone https://github.com/AutomotiveAIChallenge/aichallenge2021
PCDファイルがLFSサーバーから正常にダウンロードされていることを確認してください。
ls -lh aichallenge2021/autoware/adehome/aichallenge_ws/src/aichallenge_launch/data/IndianapolisMotorSpeedway.pcd
正常にダウンロードされている場合、ファイルサイズは約300MBになります。
Autoware.AutoはADEを使用してDocker環境でセットアップされることが推奨されています。(https://autowarefoundation.gitlab.io/autoware.auto/AutowareAuto/installation-ade.html)
公式のDockerファイルに加えてlgsvl_bridgeを導入する必要があるため、本リポジトリでADE向けのDockerファイルを提供しています。
bash setup_autoware.sh
でインストールしてください。
これによってAutoware.Auto(1.0.0)のDockerイメージが追加され、autoware/adehome
がADEのホームディレクトリに設定されます。
ローカル環境で上記スクリプトを使用せずにAutoware.Autoをセットアップしていただいても構いませんが、Autoware.Autoのバージョンは1.0.0を使用してください。
# autoware/adehomeで実行
# ADEコンテナ起動
ade start --update
# ADEコンテナに入る
ade enter
参加者の皆様にはシナリオを遂行するROS2パッケージを作成していただきますが、本リポジトリ内でそのベースとなるサンプルコードとしてautoware/adehome/aichallenge_ws/src
に以下のROS2パッケージを提供しております。
- aichallenge_launch
- 大元のlaunchファイル
aichallenge.launch.py
を含んでいます。すべてのROS2ノードはこのlaunchファイルから起動されます。
- 大元のlaunchファイル
- aichallenge_eval
- スコア算出用のパッケージです。
- aichallenge_msgs
- メッセージ定義を含みます。
- vehicle_pose_publisher
- 今回走行する点群地図の特徴量が少なく、NDTマッチングが外れやすいため、localizationの正解データを提供しております。
/aichallenge/vehicle_pose
をsubscribeしていただくことで車両位置を取得していただけます。
- aichallenge_submit
- このディレクトリの内容は自由に変更していただいて構いません。
- 提出時にはこのディレクトリの内容のみ提出していただきますので、参加者の皆さまが実装されたROS2パッケージはすべてこのディレクトリ内に配置してください。配布段階で以下のパッケージを含んでいます。
- aichallenge_submit_launch
aichallenge_submit_launch.launch.py
が大元のlaunchファイルaichallenge.launch.py
から呼び出されますので、このlaunchファイルを適宜改修して皆様が実装されたROS2ノードが起動されるように設定してください。
- aichallenge_sample
- サンプルの自動走行実装です。
- 最大35kmでlaneletの中心に沿って進むように設定されています。車両回避は設定されておらず、前方に車両が近づいた場合はブレーキを踏む挙動をします。
- sample_localizer
/aichallenge/vehicle_pose
を元にlocalizationを行うパッケージです。
# ADEコンテナ内で
source /opt/AutowareAuto/setup.bash
cd aichallenge_ws
rosdep update
rosdep install -y -r -i --from-paths src --ignore-src --rosdistro $ROS_DISTRO
colcon build
皆様に作成していただいたROS2パッケージについてもaichallenge_ws/src/aichallenge_submit
以下に配置していただき、上記手順でビルドできるようにしてください。
# ADEコンテナ内で
source /opt/AutowareAuto/setup.bash
source ~/aichallenge_ws/install/setup.bash
ros2 launch aichallenge_launch aichallenge.launch.py
これによってrvizが起動しますが、完全な動作にはlgsvl_bridgeを使用してシミュレータと通信することが必要です。別のターミナルを開き、以下のコマンドでlgsvl_bridgeを起動させておいてください。
# ADEコンテナに入る
ade enter
# ADEコンテナ内で
source ~/aichallenge_ws/install/setup.bash
lgsvl_bridge
ここまででAutoware側の設定・実行は完了です。セットアップが正常に行われていれば、rvizには車両モデルとLaneletが表示されます。
下記リンクからシミュレータのバイナリをダウンロードします。
上記リンクにあるzipファイルを解凍して頂くと
- simulator_linux(linux環境用シミュレータ)
- simulator_windows(windows環境用シミュレータ)
と環境に応じて用意しております。実行環境に合わせて各ディレクトリ内のシミュレータをご使用下さい。
本シミュレータに関する免責事項について
参加者のみなさまが本ファイルをダウンロードすることによって、みなさまのコンピュータ、またはネットワーク環境
等に支障・障害が生じた場合、本大会運営事務局はいかなる理由によるものでも一切責任を負いません。
また、これらの事象によって生じた損害等についても、本大会運営事務局は一切責任を負いません。
https://wise.svlsimulator.com/sign-in
上記リンクからLGSVLのアカウントを登録し、ログインします。
ダウンロードしたバイナリを起動します。 LINK TO CLOUDをクリックするとブラウザが開きクラスタ登録画面が表示されるので、適当な名前を入力しCreate clusterを押します。
Store → Maps → IndianapolisMotorSpeedwayの+ボタンを押します。 Store → Vehicles → DallaraIL15の+ボタンを押します。 Store → Plugins → Timer Sensorの+ボタンを押します。
先程追加したDallaraIL15の画面を開き、画像赤丸のボタンからSensor Configurationsを開きます。 Add New Configurationを押します。 名前をAutoware.Auto、BridgeをROS2に設定して、Applyを押します。 画像赤丸のボタン(Upload sensor configuration)を押します。 本リポジトリのDallaraIL15_Autoware.Auto.jsonを選択します。 Saveボタンを押します。
Simulations → Add Newをクリックした後、Select Clusterからクラスタを登録したものに設定します。 Nextを押し、Runtime TemplateにAPI Onlyを選択します。 Next → Next → Publishを押し、以下の画面が表示されたらRun Simulationを押します。これによってシミュレーションが開始されます。 シミュレータの画面にはAPI Ready!と表示されます。
シミュレータ内でのシナリオの実行(自車両追加・NPC車両の動き制御・地図読み込み等)はpythonスクリプトで行います。
シナリオを実行する前に以下を確認してください。
- シミュレータ
- API Readyの状態にあること
- ROS2
aichallenge.launch.py
がlaunchされ、rvizが表示されていることlgsvl_bridge
が起動していること
シミュレータのシナリオ実行にはLGが提供しているPythonAPI(2021.2)を使用します。シナリオを実行するPCはシミュレータ動作用PCを推奨しております。
git clone https://github.com/lgsvl/PythonAPI
cd PythonAPI
git checkout refs/tags/2021.2
READMEに従ってPythonAPIをインストールしてください。
まずセンサ設定の追加の項目で追加したセンサ設定(Autoware.Auto)のconfiguration idを取得します。画像の赤丸部分のボタンをクリックすることでクリップボードにコピーされます。取得した値はコマンド実行時のvehicle_id
オプションで使用します。
以下のコマンドでシナリオを実行します。
cd scenario
# bridgeにはAutoware動作用PCのIPを、hostにはシミュレータ動作用PCのIPを入力してください。
python3 scenario.train.py --vehicle_id={取得したconfiguration id} --bridge=127.0.0.1 --host=127.0.0.1
競技内容・ルールに関してはRULE.mdをご確認下さい。
タイムは/aichallenge/score
トピックにpublishされます。
確認方法は下記の通りです。
シミュレータを開始した後にtopicをechoさせる事で確認を取る事が出来ます。
# ADEコンテナ内で
source ~/aichallenge_ws/install/setup.bash
ros2 topic echo /aichallenge/score
又、publishされるタイミングは下記の場合になります。
- ゴール到達時
- scenario.train.pyを実行し、5分間経過した場合
/aichallenge/score
がpublishされた時点でタイムの算出となります。
/aichallenge/score
の内容については下記の通りとなります
- time : ペナルティ込みの時間です。この値が競技における正式なタイムになります。
- rawTime : シナリオが開始されてからゴール到着までにかかった時間です。
- hasFinished : ゴールに到達したら1, それ以外の場合は0になります。
- contactPenalty : 接触によるペナルティです。(1回につき5秒タイムに上乗せ)
- trackLimitPenalty : コースアウトによるペナルティです。(コース外にいた時間がタイムに上乗せされます。)
スコアの算出にあたっては、オンライン評価環境のwebページよりパッケージaichallenge_submit
のみを提出していただき、自動採点を行います。
提出後、オンライン評価環境ではevaluation/
以下のスクリプトを使って下記の手順で評価されます。
アップロードしていただいたaichallenge_submit.tar.gz
はevaluation/
以下に配置されます。
evaluation/build.sh
が実行され、evaluation/Dockerfile
で定義されるdockerイメージが作成されます。このイメージの作成手順は下記の通りです。
/opt/AutowareAuto
にbinary-foxy:1.0.0
で提供されているビルド済みのAutoware、/opt/aichallenge_ws
に本リポジトリのautoware/adehome/aichallenge_ws
で提供されているソースの配置ros-foxy-lgsvl-bridge
とlgsvl/PythonAPI
のインストール- 提出いただいた
aichallenge_submit.tar.gz
を/opt/aichallenge_ws/src/aichallenge_submit
へ展開 rosdep install
とcolcon build
の実行
オンライン評価環境でsimulatorが立ち上がり、APIモードのシミュレーションが開始されます。
同一のマシンでevaluation/run.sh
が実行され、dockerコンテナが立ち上がり採点が行われます。コンテナ内ではevaluation/main.bash
の実行によって、以下が行われます。
- rosbagの記録開始
- lgsvl_bridgeの立ち上げ
- ROS2ノード群の起動
- シナリオの開始
実際の採点時の手順や実行されるコマンドも、simulatorの自動起動/終了・scoreの取得・rosbagのアップロード等の手順が追加されていることを除いてevaluation/main.bash
と同一です。
evaluation/run.sh
で実行した場合、evaluation/output
以下にrosbagと実行時ログ(ros2 launchの出力)が保存されます。
オンライン評価環境では下の2つのシナリオが実行されます。
-
配布シナリオ(
scenario.train.py
)オンライン評価環境での動作を検証できるよう、配布しているシナリオについても実行され、その時のrosbagと実行時ログがwebページから取得できます。このシナリオのタイムは順位には関係しません。
-
評価用シナリオ(非公開)
配布していないタイム評価のためのシナリオです。このシナリオの実行時のタイムトピックの出力を記録し、順位を決めるタイムとします。rosbagや実行時ログはダウンロードできません。
autoware/adehome/aichallenge_ws/src/aichallenge_submit/create-tar-file.sh
を使用しaichallenge_submit
内のソースコードを圧縮してください。
cd autoware/adehome/aichallenge_ws/src/aichallenge_submit/
./create-tar-file.sh
autoware/adehome/aichallenge_ws/src/aichallenge_submit.tar.gz
に圧縮済みのファイルが生成されていることを確認してください。
オンライン評価環境にアップロードする前に、ローカル環境を使いオンライン環境と同様のDockerコンテナ内でビルド・実行ができることを以下の手順で確認してください。
まず、(1)で作成したaichallenge_submit.tar.gz
をevaluation/
以下に配置してください。ファイル構成は下記のようになります。
evaluation/
|-- Dockerfile
|-- aichallenge_submit.tar.gz
|-- build.sh
|-- main.bash
`-- run.sh
evaluation/output/
には実行時のrosbagやスコアの記録が保存されます。以前の実行時に作成されたディレクトリがあれば削除してください。evaluation/bringup/
にはこのリポジトリの内容(のうち必要な部分)が./build.sh
を実行した時にコピーされます。
次に、作成いただいたaichallenge_submit
を含むdockerイメージをビルドしてください。
./build.sh
ビルドが完了したら、本READMEの手順通りにシミュレーターを起動し、APIモードのシミュレーションを開始してください。API ready!と表示されていることを確認したら、run.sh
によってdockerコンテナを立ち上げ採点のフローを実行してください。
run.sh
内で使われている環境変数LG_VEHICLE_ID
は本READMEのセンサ設定時に取得したconfiguration idに設定してください。
export LG_VEHICLE_ID='{取得したconfiguration id}'
./run.sh
最後に、evaluation/output/score.json
に出力されるスコアを確認してください。evaluation/output/
以下にはrosbagと実行時ログも出力されますので、デバッグ等の参考にしてください。
webページにログイン後画面の指示に従って(1)で作成したaichallenge_submit.tar.gz
をアップロードしてください。
アップロードが終了すると、ソースのビルド・シミュレーションの実行が順番に行われます。
- 正常に終了した場合は
Scoring complete
と表示され、配布シナリオ・評価用シナリオそれぞれのタイムが表示されます。さらに配布シナリオについてはevaluation/output/
に出力されるものと同様のrosbagと実行時ログがタイム下に表示されるリンクよりダウンロードできます。最後にアップロードした評価シナリオのタイムが、ランキングにて最終タイムとして使われます。 - 正常にシナリオ実行が終了しても、launchに失敗した等でスコアが出力されていない場合は
No result
、チェックポイントを全て通過していない場合はCheckpoint not passed
と表示され、いずれの場合も最終的なタイムとしては使われません。 - ビルドに失敗した場合は
Build error
が表示されます。(1),(2)の手順に従ってDocker imageのビルドができることを再度ご確認ください。 - シミュレーターの実行に失敗した場合は
Simulator error
と表示されます。この場合サーバーサイドで内部エラーが生じている可能性があるため再度アップロードお願いします。繰り返し表示されてしまう場合はお問合せください。
なお、採点実行中は新たなソースのアップロードはできません。またアップロードできるのは1日3回までで、日本時間0時にリセットされます。
githubの更新などがある場合は、以下のURLのissueに新たにコメントします。
本issueをsubscribeいただければ、更新時に通知されます(通知をオンにしてください)。
https://github.com/AutomotiveAIChallenge/aichallenge2021/issues/1
競技内容、リポジトリ内容物等に関するお問い合わせについては、github上のissueにてお願いします。質問は日本語、英語どちらでも構いません。質問者様は質問が解決した際issueをcloseしてください。
オンラインシミュレータにログインできないなど、オンラインシミュレータのアカウントに関するお問い合わせは[email protected]宛にお願いいたします。
質問内容は競技内容に直接関係あるものに限ります。ソフトウェアの使用方法に関するご質問については、公平性の観点から回答いたしかねます。
各issueでの質問については、基本的に2営業日以内に回答いたします。ただし、検討に時間を要する質問や質問数が多い場合等については、2営業日以上いただく可能性があることはご理解ください。