Skip to content

Commit

Permalink
Add data for online evaluation (#18)
Browse files Browse the repository at this point in the history
  • Loading branch information
dazzhe authored Jan 6, 2023
1 parent dc0a242 commit ac1541f
Show file tree
Hide file tree
Showing 198 changed files with 16,297 additions and 17 deletions.
96 changes: 87 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,26 +120,32 @@ sudo apt install libvulkan1
- [git lfs](https://packagecloud.io/github/git-lfs/install)
- [ROS2](https://docs.ros.org/en/galactic/index.html)(動作確認済みバージョン:Galactic)
#### **Dockerイメージの準備・起動 〜 Autowareの準備**

##### **Dockerイメージ(v3.1)について(2023/1/6追記)**
Dockerイメージは[autoware(fc50327ec926d5c9a04d385581f102a418af0403)](https://github.com/autowarefoundation/autoware/commit/fc50327ec926d5c9a04d385581f102a418af0403)に以下を適用しています。
- [fix(pointcloud_preprocessor): add missed target dependency #2101](https://github.com/autowarefoundation/autoware.universe/pull/2101/files)の修正を適用して提供しています。
- tier4_*_launchパッケージの削除
- aichallenge_submitに移動しています。autowareのlaunch, configファイルを変更したい場合はこちらを編集してください。

1. Dockerイメージを入手
```
docker pull ghcr.io/automotiveaichallenge/aichallenge2022-sim/autoware-universe-cuda:latest
docker pull ghcr.io/automotiveaichallenge/aichallenge2022-sim/autoware-universe-cuda:3.1
```
※上記の方法では長時間かかってしまう方・タイムアウトしてしまう方↓
[こちら](https://drive.google.com/drive/u/2/folders/1VZAcGzcFpOBJlmmybcGau7BaHzZW5Chc)に、イメージをtarにまとめたものを置きましたので、下記コマンドよりご利用ください。
[こちら](https://drive.google.com/file/d/145HyoeXye_bbdT6tOVVCvbSM1MTm2CKI/view?usp=share_link)に、イメージをtarにまとめたものを置きましたので、下記コマンドよりご利用ください。
```
gzip -d aichallenge2022_sim_autoware_v2.0.tar.gz
docker load < aichallenge2022_sim_autoware_v2.0.tar
docker load < aichallenge2022_sim_autoware_v3.1.tar.gz
```
2. 大会用データのダウンロード
1. 大会用データのダウンロード
```
sudo apt install -y git-lfs
git lfs clone https://github.com/AutomotiveAIChallenge/aichallenge2022-sim
```

3. rockerを起動
1. rockerを起動
```
cd ./aichallenge2022-sim
rocker --nvidia --x11 --user --net host --privileged --volume autoware:/aichallenge -- ghcr.io/automotiveaichallenge/aichallenge2022-sim/autoware-universe-cuda:latest
rocker --nvidia --x11 --user --net host --privileged --volume autoware:/aichallenge -- ghcr.io/automotiveaichallenge/aichallenge2022-sim/autoware-universe-cuda:3.1
```

### **サンプルコード(ROS2パッケージ)**
Expand All @@ -159,6 +165,11 @@ rocker --nvidia --x11 --user --net host --privileged --volume autoware:/aichalle
- `aichallenge_submit_launch.launch.xml`が大元のlaunchファイル`aichallenge.launch.xml`から呼び出されますので、このlaunchファイルを適宜改修して皆様が実装されたROS2ノードが起動されるように設定してください。
- sample_code_cpp
- サンプルの自動走行実装です。
- obstacle_stop_planner_custom
- autoware.universeのobstacle_stop_plannerから障害物を誤検出する問題を解消しています。
- tier4_*_launch
- autowareのlaunchファイルをコピーして一部編集したものです。autowareのtier4_*_launchは削除しているため、こちらを必ずaichallenge_submit内に残すようにしてください。
- obstacle_stop_plannerの代わりにobstacle_stop_planner_customを呼び出すように変更してあります。

### **サンプルコードビルド**
```
Expand Down Expand Up @@ -218,6 +229,75 @@ ros2 launch autoware_launch e2e_simulator.launch.xml vehicle_model:=sample_vehic
## タイム取得
タイム取得方法については[RULE.md](/RULE.md)を参照ください。


## オンライン評価環境について
### 評価時のオンライン環境での実行フローの概略
スコアの算出にあたっては、オンライン評価環境のwebページよりパッケージ`aichallenge_submit`のみを提出していただき、自動採点を行います。
提出後、オンライン評価環境では`evaluation/`以下のスクリプトを使って下記の手順で評価されます。

#### (1) aichallenge_submitの配置
アップロードしていただいた`aichallenge_submit.tar.gz``evaluation/`以下に配置されます。

#### (2) docker build
`evaluation/build.sh`が実行され、`evaluation/Dockerfile`で定義されるdockerイメージが作成されます。このイメージの作成手順は下記の通りです。

1. 提出いただいた`aichallenge_submit.tar.gz``/aichallenge/aichallenge_ws/src/aichallenge_submit`へ展開
2. `rosdep install``colcon build`の実行

### (3) シミュレーション実行
オンライン評価環境でsimulatorが立ち上がり、シミュレーションが開始されます。

コンテナ内では`evaluation/main.bash`の実行によって、以下が行われます。

1. ROS2ノード群の起動
2. シナリオの開始

`evaluation/run.sh`で実行した場合、`evaluation/output`以下に結果(score.json)が保存されます。

## オンライン評価環境にソースコードを提出する際の手順
### (1) ソースコードを圧縮する
`aichallenge_submit`内のソースコードを圧縮します。

```sh
cd evaluation
sh create_submit_tar.sh
```

`evaluation/aichallenge_submit.tar.gz`に圧縮済みのファイルが生成されていることを確認してください。

### (2) `evaluation/` でdocker内での自動実行ができることを確認する
オンライン評価環境にアップロードする前に、ローカル環境を使いオンライン環境と同様のDockerコンテナ内でビルド・実行ができることを以下の手順で確認してください。

まず、以下のファイルが`evaluation/`以下に配置されていることを確認してください。
- `aichallenge_submit.tar.gz`
-

次に、作成いただいた`aichallenge_submit`を含むdockerイメージをビルドしてください。
```sh
sh build.sh
```

ビルドが完了したら、`run.sh`によってdockerコンテナを立ち上げ採点のフローを実行してください。
```sh
sh run.sh
```

最後に、`evaluation/output/score.json`に出力されるスコアを確認してください。

### (3) オンライン評価環境webページよりソースをアップロードする

[webページ](https://aichallenge.synesthesias.jp/)にログイン後画面の指示に従って(1)で作成した`aichallenge_submit.tar.gz`をアップロードしてください。

アップロードが終了すると、ソースのビルド・シミュレーションの実行が順番に行われます。

- 正常に終了した場合は`Scoring complete`と表示され、配布シナリオ・評価用シナリオそれぞれのタイムが表示されます。最後にアップロードした評価シナリオのタイムが、ランキングにて最終タイムとして使われます。
- 正常にシナリオ実行が終了しても、launchに失敗した等でスコアが出力されていない場合は`No result`、チェックポイントを全て通過していない場合は`Checkpoint not passed`と表示され、いずれの場合も最終的なタイムとしては使われません。
- ビルドに失敗した場合は`Build error`が表示されます。(1),(2)の手順に従ってDocker imageのビルドができることを再度ご確認ください。
- シミュレーターの実行に失敗した場合は`Simulator error`と表示されます。この場合サーバーサイドで内部エラーが生じている可能性があるため再度アップロードお願いします。繰り返し表示されてしまう場合はお問合せください。
- 採点プロセスは一度の提出で5回行われ、結果はその平均によって決定されます。

なお、採点実行中は新たなソースのアップロードはできません。またアップロードできるのは1日3回までで、日本時間0時にリセットされます。

## その他
### 更新等の通知に関して
githubの更新などがある場合は、以下のURLのissueに新たにコメントします。
Expand All @@ -232,5 +312,3 @@ https://github.com/AutomotiveAIChallenge/aichallenge2022-sim/issues/1
各issueでの質問については、基本的に2営業日以内に回答いたします。ただし、検討に時間を要する質問や質問数が多い場合等については、2営業日以上いただく可能性があることはご理解ください。

オンラインシミュレータにログインできないなど、オンラインシミュレータのアカウントに関するお問い合わせは[email protected]宛にお願いいたします。


91 changes: 86 additions & 5 deletions README_en.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,16 +118,23 @@ Please install the following:
- [Nvidia Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html)
- [git lfs](https://packagecloud.io/github/git-lfs/install)
- [ROS2](https://docs.ros.org/en/galactic/index.html)(Confirmed Operation:Galactic)

#### **Starting Docker Image and Autoware**

##### **About Docker image (v3.1) (added on 1/6/2023)**
Docker image is [autoware(fc50327ec926d5c9a04d385581f102a418af0403)](https://github.com/autowarefoundation/autoware/commit/fc50327ec926 d5c9a04d385581f102a418af0403) with the following applied.
- [fix(pointcloud_preprocessor): add missed target dependency #2101](https://github.com/autowarefoundation/autoware.universe/pull/2101/files) with the following fixes applied.
- Remove tier4_*_launch package
- Moved to aichallenge_submit, if you want to change autoware's launch, config file, please edit here.

1. Pull the Docker image using docker pull.
```
docker pull ghcr.io/automotiveaichallenge/aichallenge2022-sim/autoware-universe-cuda:latest
docker pull ghcr.io/automotiveaichallenge/aichallenge2022-sim/autoware-universe-cuda:3.1
```
※If the above method takes a long time or times out, please use the following command.
Please use the following command, as we have placed a tar file of the images at [here](https://drive.google.com/drive/u/2/folders/1VZAcGzcFpOBJlmmybcGau7BaHzZW5Chc).
Please use the following command, as we have placed a tar file of the images at [here](https://drive.google.com/file/d/145HyoeXye_bbdT6tOVVCvbSM1MTm2CKI/view?usp=share_link).
````
gzip -d aichallenge2022_sim_autoware_v2.0.tar.gz
docker load < aichallenge2022_sim_autoware_v2.0.tar
docker load < aichallenge2022_sim_autoware_v3.1.tar.gz
````

2. Get the data for the competition.
Expand All @@ -139,7 +146,7 @@ git lfs clone https://github.com/AutomotiveAIChallenge/aichallenge2022-sim
3. Start rocker.
```
cd ./aichallenge2022-sim
rocker --nvidia --x11 --user --net host --privileged --volume autoware:/aichallenge -- ghcr.io/automotiveaichallenge/aichallenge2022-sim/autoware-universe-cuda:latest
rocker --nvidia --x11 --user --net host --privileged --volume autoware:/aichallenge -- ghcr.io/automotiveaichallenge/aichallenge2022-sim/autoware-universe-cuda:3.1
```

### **Sample code (ROS2 package)**
Expand All @@ -159,6 +166,11 @@ We provide the following ROS2 package in `autoware/aichallenge_ws/src` as a samp
- Since `aichallenge_submit_launch.launch.xml` is called from the original launch file `aichallenge.launch.xml`, so please modify this launch file so that the ROS2 node in which you are implemented will be launched.
- sample_code_cpp
- This is a sample automatic run implementation.
- obstacle_stop_planner_custom
- Fixes a problem with false detection of obstacles from obstacle_stop_planner in autoware.universe.
- tier4_*_launch
- This is a copy of autoware's launch file, partially edited. autoware's tier4_*_launch has been deleted, so be sure to leave this one in aichallenge_submit.
- It has been modified to call obstacle_stop_planner_custom instead of obstacle_stop_planner.

### **sample code build**
````
Expand Down Expand Up @@ -217,6 +229,75 @@ ros2 launch autoware_launch e2e_simulator.launch.xml vehicle_model:=sample_vehic
## Time Measurement
Please refer to [RULE_en.md](/RULE_en.md) for the time acquisition method.

## About the online evaluation environment
### Outline of the execution flow in the online environment during evaluation
To calculate the score, only the package `aichallenge_submit` is submitted from the web page of the online evaluation environment for automatic scoring.
After submission, the online evaluation environment uses the scripts under `evaluation/` to perform the following steps.

#### (1) Deployment of `aichallenge_submit
The uploaded `aichallenge_submit.tar.gz` will be placed under `evaluation/`.

#### (2) docker build
The `evaluation/build.sh` will be executed to create the docker image defined in `evaluation/Dockerfile`. The procedure for creating this image is as follows

1. extract the submitted `aichallenge_submit.tar.gz` to `/aichallenge/aichallenge_ws/src/aichallenge_submit
2. run `rosdep install` and `colcon build

### (3) Simulation run
simulator will be launched in the online evaluation environment and simulation will be started.

In the container, by executing `evaluation/main.bash`, the following will be performed:

1. start ROS2 nodes
2. start of scenario

If executed in `evaluation/run.sh`, the results (score.json) will be saved under `evaluation/output`.

## Procedure for submitting source code to the online evaluation environment
### (1) Compress your source code.
Compress the source code in `aichallenge_submit`.

```sh
cd evaluation
sh create_submit_tar.sh
```

Make sure that a compressed file is generated in `evaluation/aichallenge_submit.tar.gz`.

### (2) Confirm that the file can be automatically executed in docker at `evaluation/`.
Before uploading to the online evaluation environment, please confirm that you can build and execute in a Docker container similar to the online environment using your local environment by following the steps below.

First, make sure the following files are located under `evaluation/`.
- `aichallenge_submit.tar.gz`
-aichallenge_submit.tar.gz`.

Next, build the docker image containing the `aichallenge_submit` you created.
```sh
sh build.sh
```

Once the build is complete, launch the docker container with `run.sh` and execute the scoring flow.
```sh
sh run.sh
```

Finally, check the scores output to `evaluation/output/score.json`.

### (3) Upload the source code from the online evaluation environment web page

Upload the `aichallenge_submit.tar.gz` created in (1) according to the instructions on the screen after logging in to the [web page](https://aichallenge.synesthesias.jp/).

After the upload is finished, the source build and simulation will be executed in order.

- If it is successfully completed, the message `Scoring complete` will be displayed, and the time for each of the distribution and evaluation scenarios will be shown. The time of the last uploaded evaluation scenario will be used as the final time in the ranking.
- Even if the scenario execution finishes successfully, `No result` will be displayed if no score is output due to launch failure, etc., or `Checkpoint not passed` if all checkpoints have not been passed, and in any case, the time will not be used as the final time.
- If the build fails, `Build error` is displayed. Please reconfirm that you can build the Docker image by following the steps (1) and (2).
- If the simulator fails to run, you will see `Simulator error`. In this case, there may be an internal error on the server side, so please upload the image again. If the error message is displayed repeatedly, please contact us.
- The grading process will be performed 5 times per submission, and the result will be determined by the average of the 5 times.

Please note that you will not be able to upload new sources while the grading process is in progress. Uploading is limited to 3 times a day and will be reset at midnight Japan time.


## Others
### Notification of updates
When there are updates on GitHub, we will make a new comment on the issue at the following URL. Please SUBSCRIBE to this issue to be notified of updates (please turn on notifications)https://github.com/AutomotiveAIChallenge/aichallenge2022-sim/issues/1.
Expand Down
Loading

0 comments on commit ac1541f

Please sign in to comment.