Japan Automotive AI Challenge 自動運転AIチャレンジとはイメージ画像 (ティアフォー提供)

制御部門予選オンラインシミュレーション競技のQ&A

競技へのご質問および回答を掲載します。
ご質問はこちら (ikusei@jsae.or.jp) までお願い致します。

本競技には、AutowareのノードのインテグレーションおよびROSシステムとのインテグレーションも含まれております。そのため参加者間の公平性の観点から、技術的な内容に関する質問への回答は、競技が開催されるプラットフォームに関連するものに限らせていただきます。

ローカルシミュレーターダウンロード、オンラインシミュレーターへのアップロード手順等、github上に掲載がございます。合わせてご確認下さい。
https://github.com/tier4/aichallenge_bringup

推奨環境としてUbuntu16.04 or 14.04とありますが、Ubuntu18.04は使用できないでしょうか?

Ubuntu16.04に対応したAutoware (バージョン: 1.12.0) は、CUDA9.0にしか対応していないようです。
さらに、大会要項には、AutowareとLGSVLを同時起動する場合、GPUはRTX2080以上推奨との記載があります。
しかしながら、RTX2080以上のGPUは、私の記憶ではCUDA9.0に対応しておらず、実験することができません。(私の手元にあるTITAN RTXでは動きませんでした。)

Ubuntu18.04であれば、CUDA10.0に対応したAutoware (バージョン: 1.13.0) を使用することができ、RTX2080以上のGPUも使用できます。

Ubuntu18.04を使用すると何か不具合等が出ますでしょうか?

Autoware、Ubuntuのバージョンについてご質問が複数ございましたので、当初の記載から変更となり恐れ入りますが、Ubuntuは18.04を推奨、Autowareは1.13.0を推奨とさせていただきます。

## Ubuntuバージョン
https://www.jsae.or.jp/jaaic/rule.html
にはUbuntu16.04、14.04とありますが、少なくとも14.04はNVIDIA Driverが配布されていなさそうなことと、最新のAutowareだとUbuntu18.04しかサポートしてないため、公式ページの推奨Ubuntuバージョン記述が正しいのか確認したいです。

## Autowareバージョン
Autowareはバージョンアップでパッケージ構成が大きく変わることがあるため、オンラインシミュレータ評価環境でAutoware必須であればバージョン固定してほしいです。

##Ubuntu, Autowareのバージョン
Autoware、Ubuntuのバージョンについてご質問が複数ございましたので、当初の記載から変更となり恐れ入りますが、Ubuntuは18.04を推奨、Autowareは1.13.0を推奨とさせていただきます。
## 参加メンバ
1チーム当たり3名まで登録できそうなのですが、登録フォームを読むと2名分しか情報を書けないため、正しい参加可能人数をお教え頂きたいです。
## 参加メンバのみ回答
フォーム上、リーダー、メンバ1、メンバ2の3名登録が可能
## タスク
- 各タスクへの入力データ、出力データが定義されていないため明記してほしいです。
- 想定する車両操作情報の制約(最高速、jerk等)あれば明記頂きたいです
- アクセル制御、路駐車両の回避:センサデータを使った車両検出もタスクに含まれるのかわかりませんでした。
- 信号機認識、発進:センサデータを使った停止線検出もタスクに含まれるのかわかりませんでした。

各タスクにおいての入力データは車両への制御コマンド(autoware_msgs/VehicleCmd型)、出力データは点数(100点満点,std_msgs/Float31型)となります。
制御コマンドのautoware_msgs/VehicleCmd内部にあるctrl_cmd内のlinear_acceleration,steerting_angleデータフィールドを用いることで車両の制御が行えます。
タスク1のACCシナリオにおいては"/acc/score"トピック、タスク2の障害物回避シナリオにおいては"/obstacle_avoid/score"トピック、タスク3の信号機停止、発進シナリオにおいては"/traffic_light/score"トピックで出力されます。
あるタスクにおいて他のタスクの点数は無視されます。
3つのタスクの合計点で順位をつけ、予選通過者を決定します。

- 想定する車両操作情報の制約(最高速、jerk等)あれば明記頂きたいです
autoware_msgs/VehicleCmdのctrl_cmdで制御できる範囲であればいかなる制約もありません。
- アクセル制御、路駐車両の回避:センサデータを使った車両検出もタスクに含まれるのかわかりませんでした。
センサデータを使った車両検出もタスクに含まれます。
すべてのタスクはセンサデータを受取り、制御コマンドを送信するモジュールまでを参加者が開発します。
Autowareやその他のライブラリのアルゴリズムを利用するのはそのライブラリのライセンスに抵触していない限りにおいて問題ありません。
- 信号機認識、発進:センサデータを使った停止線検出もタスクに含まれるのかわかりませんでした。
センサデータを使った停止線検出、信号機認識もタスクに含まれます。
すべてのタスクはセンサデータを受取り、制御コマンドを送信するモジュールまでを参加者が開発します。
Autowareやその他のライブラリのアルゴリズムを利用するのはそのライブラリのライセンスに抵触していない限りにおいて問題ありません。

## オンラインシミュレータ環境
Autoware、ROS、シミュレータ以外の3rd partyライブラリを使う場合、オンラインシミュレータ環境上でどのように組み込むのかわかりませんでした。
upされたコードはcolconでビルドされます。cmake,ament,catkinのパッケージであれば外部ライブラリを取り込んでビルド可能です。
## 権利周り
本タスクをやるにあたってアルゴリズム、ソースコードの権利がどうなるのか公式ページから読み取れなかったので、明記頂きたいです。
アップロードしてもらうコードの権利については、開発者に帰属することと致します。
後日、正式にアナウンスさせていただきます。
競技の条件がよく理解できませんでした。
制御部門ではどこの範囲を開発するのか(行動計画及び制御アルゴリズムも開発のみなのか)
認識、行動計画、制御すべてが競技の範囲内となります。自分で開発しても、ライセンスに問題がなければほかの方が開発したアルゴリズムを用いても構いません。
  1. NVIDIA GTX1080 が対応OpenGLはVer4.5ですが、ローカルシミュレータ及びオンラインシミュレータでGPUやOpenGL、CVライブラリなどの制限は有るでしょうか?
  2. Windowsでもシミュレータが動作可能という記載が有りましたが、シナリオ作成も可能という認識でしょうか?
  3. 上記2の続きですがWindows環境の場合、シミュレータのセットアップ手順などの公開資料はあるでしょうか?
  4. 他に制限事項など有れば教えて頂きたいと思います。
  1. ローカルシミュレータでは制限はありません。オンラインシミュレータはAWSのインスタンス上で動作します(インスタンスタイプはg4dn.2xlarge )。
  2. シナリオはPython APIによって記述するのでPythonが動作するマシンであれば任意のマシンで記述することが可能です。ただし、オンラインシミュレータで動作するシナリオは主催側で事前に記述されたものとなります。
  3. Windows環境に対応したバイナリをオフィシャルページにアップロードいたしました。こちらを利用下さい。
サイトの指示通りに環境構築を進めて、このサイトのrvizコマンドを打つところまで行いました。
しかし、rvizで赤く""Global Status: Error ... Fixed Frame [map] does not exist""というエラーが表示されてしまいます。
これを解消する方法を教えて頂きたいです。
本件確認いたしましたところ、aichallenge_bringupパッケージに存在するこちらの.rvizファイルをロードしないとrviz内部の座標系が正常に設定されないため上記のエラーがでます。
本件READMEの不備と判断いたしますので、早急にREADMEに内容の記述を追加いたします。

> センサデータを使った車両検出もタスクに含まれます

車両検出をディープラーニングで行う場合、オンラインシミュレータ環境で使用できるディープラーニングフレームワークの種類、バージョンなどに制約あるようであればご提示頂きたいです。

ROSにはrosdepという依存解決システムがございます。
本大会に置きましては提出されたコードから実行ファイルを作成する際にrosdepで依存解決を行います。
rosdepで依存解決が可能な深層学習フレームワークであれば使用可能です。
なお、決勝戦(本戦)の内容については現在検討中ですので、5月頃に別途本Websiteにて告知させていただきます。
## 開発の仕方について
私たちが開発しなければならない部分は「センサー信号から制御入力」の部分ということはQ&Aを拝見して分かりました.
しかし,インターネット等で調べると信号認識などはすでにAUTOWARE内にモジュールのような形で存在していることがわかりました.
そこで,開発の仕方はAUTOWARE内のモジュールをどのように繋ぎ合わせていくのかという形で開発していくのか,それとも認識,経路探索,制御のアルゴリズムを一から作り上げていくのか,など
どの範囲で開発していくのかを教えていただければと思います.
Autowareのモジュールをつなぎ合わせても、自前のモジュールを用いて開発しても構いません。
## そもそもの開発範囲への疑問
ルール上は「共通の認識アルゴリズムを用いて認識し,制御を行い制度を競ってもらう」というものだと記載してあると認識しております.
ですので,なぜ私たちはセンサーデータを受け取る部分から制御信号生成までが開発範囲となっているのでしょうか.
また,シミュレーション評価上も共通のアルゴリズムを用いて認識するのであれば,その部分の詳細について記載していただきたく思います.
ルールに関してはこちらのページが公式見解となります。
ここに記述されています通り、認識部分の開発、あるいはAutowareの認識ノードとのインテグレーションも競技に含まれます。
インテグレーションも競技の一環であるためAutowareの認識関連のノードに関する詳細に関してはほかの競技者との公平性の観点からお答えしかねます。

信号や物体の認識において、ディープラーニングを用いようと考えているのですが、フレームワーク (PytorchやTensorflowなど) の使用制限はありますでしょうか?
オンライン環境や決勝戦で使用できるフレームワークを教えて頂きたいです。

また、ハードウェアの性能によって処理速度が大きく変わってくるかと思います。
リアルタイム処理を求めるならば、ハードウェア構成を考えたネットワークにしなければなりません。
オンライン環境や決勝戦で使用されるハードウェアの構成を教えて頂きたいです。

##フレームワーク
ROSにはrosdepという依存解決システムがございます。
本大会に置きましては提出されたコードから実行ファイルを作成する際にrosdepで依存解決を行います。
rosdepで依存解決が可能な深層学習フレームワークであれば使用可能です。
なお、決勝戦(本戦)の内容については現在検討中ですので、5月頃に別途本サイトにて告知させていただきます。

##ハードウェア
オンライン環境については、Nvidia Tesla T4 のGPUでAutowareは動作いたします。
なお、決勝戦(本戦)の内容については現在検討中ですので、5月頃に別途本サイトにて告知させていただきます。

今回のチャレンジで実行される3つのシナリオ(アクセル制御、路駐車両の回避、信号認識・発進)は、オンライン評価時も全く同じ状況下のシナリオで評価されるのでしょうか?
例えばローカルシミュレータでは、マップが""Borregas Avenue""、自己車両が""Lexus""となっております。
オンラインシミュレータでは、別のマップや車両を使用するのか、それともオフラインシミュレータと同一なのかを教えていただきたいです。
オンラインシミュレータではマップ、車両は同一です。ですがマップ上に存在する他の車両の相対位置や信号機の色はオンライン評価時のものと事前配布のものとでは異なります。
自己車両と目標車両(アクセル制御の前方車と路駐車両回避の路駐車両)以外の車や人は、スポーンをさせて評価をするのでしょうか?
他の動的物体をスポーンした場合としてない場合とでは、難易度が大きく異なると思いましたので、質問をさせていただきました。
特に路駐車両の回避では、クリティカルに影響するかと思います。
サンプルシナリオに存在しない物体がオンライン評価時にスポーンすることはありません。

> A. ROSにはrosdepという依存解決システムがございます。
> 本大会に置きましては提出されたコードから実行ファイルを作成する際にrosdepで依存解決を行います。
> rosdepで依存解決が可能な深層学習フレームワークであれば使用可能です。

rosdepが使えることは把握しておりますが、rosdepで依存解決が可能なフレームワークについて知っている範囲では見たことがないため、具体的な例があればお教え頂けないでしょうか?

例といたしましてはこちらにあります通り、rosdepはtensorflow-gpuを解決可能です。
https://github.com/ros/rosdistro/blob/c8ef92daf18bf42c9fa76839c2f61db62d9a16ef/rosdep/python.yaml#L4511

> A. ROSにはrosdepという依存解決システムがございます。
> 本大会に置きましては提出されたコードから実行ファイルを作成する際にrosdepで依存解決を行います。
> rosdepで依存解決が可能な深層学習フレームワークであれば使用可能です。

ご認識されていると思いますが深層学習フレームワークはCUDA、cuDNNのバージョンに強く紐付いており、バージョンが合っていないと動かすことができません。そのため、オンライン環境にCUDA、cuDNNがインストールされているか、されているとしたらどのバージョンが入っているのかを明記頂く必要があると考えています。
また、TensorRTがインストールされているか、されているとしたらどのバージョンが入っているのかをお教え頂きたいです。

> ここでの「センサデータ」はLiDARデータ、カメラ画像データだけでなく、Lanelet2地図データも含まれますでしょうか?
> この地図データには停止線などの情報が含まれており、その情報を使っていいのか読み取れないためです。

こちらについて回答頂きたいです。これはルール上どうなっているかに依存しているため開発者側から判断不能です。

> Autoware.AI 1.13.0のソースコードを確認しましたが、この修正は取り込まれていないため、GNSS情報をもとに初期位置を与えることができません。
> オンラインシミュレータでどのように与える想定なのかお教え頂きたいです。

こちらについて回答頂きたいです。大会運営の推奨Autowareバージョンに含まれる不具合であり、その不具合の改修は開発者が実施するインテグレーションには該当しないという認識です。

cudaは10となります。 tensorrt はインストールされていません。
各シナリオにおける自車両の初期位置に関しましては、配布済みのサンプルシナリオと初期の自車両位置を合わせてあります。
ローカルシミュレータにおいて初期位置推定アルゴリズムの動作確認を取っていただければと思います。
  • 制御部門のスケジュールが今後延長される可能性は有るでしょうか?
  • 3シナリオのうち、いずれか一つだけのエントリでも問題無いでしょうか?
  • いまのところ再延長の予定はございません。
    オンラインシミュレーションの採点方法はオフィシャルページに記載の通りとなります。

    シミュレータとautowareの通信はできているのですがautowareからvehicle_cmdのメッセージがpublishされないので自分でvehicle_cmdをpublishさせようと思ったのですがtypeが違うみたいで上手く動作しません。
    autowareからsubscribeしてvehicle_cmdをpublishするソースコードの単純なものでいいので(サンプルという形でも)展開いただけませんか?

    また、今回はシミュレータの受け取るメッセージは固定されていますがautoware側のpublishするコードを変えることは可能でしょうか?

    サンプルを追加し、Readmeの最後に記述を追加しました。
    ROSとシミュレータ側のインターフェースに関しては変更不可となります。
    しかしROS内部でのTopic等のインターフェースに関しては変更可能となります。
    1. 各タスクの試行回数。例えばアクセル制御タスクは5回行われ、その平均点を競うのか、それとも1回のみの点数を競うのか。
    2. 制御対象の車の初期位置や追従する車の位置関係は固定かランダムか。またその初期位置を開発者が事前に知ることができるのか。
    3. タスクの開始は開発者の任意のタイミングなのか。
      初期位置が与えられないならば、マップから自己位置を計算しなければならないため、数秒かかってしまう。自己位置を計算してからタスクを開始できるのかが知りたい。
    1. オンラインシミュレーションのルールについては別途参加者に御連絡します。
    2. 固定ではありますが、事前に配られているサンプルシナリオとは追従する車両の初期位置が異なります。また、その位置を事前に知ることはできません。
    3. 自車両の初期位置はサンプルシナリオ通りになります。マップから自己位置を計算する必要がないためタスクはシナリオと同時に開始されます。

    > - 信号機認識、発進:センサデータを使った停止線検出もタスクに含まれるのかわかりませんでした。
    > センサデータを使った停止線検出、信号機認識もタスクに含まれます。
    > すべてのタスクはセンサデータを受取り、制御コマンドを送信するモジュールまでを参加者が開発します。

    ここでの「センサデータ」はLiDARデータ、カメラ画像データだけでなく、Lanelet2地図データも含まれますでしょうか?
    この地図データには停止線などの情報が含まれており、その情報を使っていいのか読み取れないためです。
    また、各タスクを実施するに当たって、自己位置推定処理も開発者が実装する必要あるか明記頂きたいです。もし、自己位置推定処理を行う場合、最初に自車両の初期位置姿勢を与える必要があると考えています。

    GNSS情報をもとに初期位置を与える方法もありますが、シミュレータのドキュメントには以下の記載があります。
    https://www.lgsvlsimulator.com/docs/autoware-instructions/

    > An alternative would be to use GNSS for an inital pose or for localization but the current Autoware release (1.12.0) does not support GNSS coordinates outside of Japan. Fix for this is available in following pull requests: utilities#27, common#20, core_perception#26 These are not yet merged in Autoware master.

    Autoware.AI 1.13.0のソースコードを確認しましたが、この修正は取り込まれていないため、GNSS情報をもとに初期位置を与えることができません。
    オンラインシミュレータでどのように与える想定なのかお教え頂きたいです。

    > ‐アップロードしてもらうコードについては、権利を放棄してもらう(自動車技術会、ティアフォーに帰属)方向で検討いたしております。
    > 決定次第、正式にアナウンスさせていただきます。

    こちらはいつ頃決定予定かお教え頂きたいです。この事項が明らかになっていないとエントリー可否を判断できないためです。

    ##権利まわり
    QA記載済み

    • ここでの「センサデータ」はLiDARデータ、カメラ画像データだけでなく、Lanelet2地図データも含まれますでしょうか?
      この地図データには停止線などの情報が含まれており、その情報を使っていいのか読み取れないためです。

      使用可能です、点群地図(.pcd)も合わせて使用可能となります。
    • また、各タスクを実施するに当たって、自己位置推定処理も開発者が実装する必要あるか明記頂きたいです。
      オンラインシミュレータでどのように与える想定なのかお教え頂きたいです。

      各シナリオにおける自車両の初期位置に関しましては、配布済みのサンプルシナリオと初期の自車両位置を合わせてあります。ローカルシミュレータにおいて初期位置推定アルゴリズムの動作確認を取っていただければと思います。

    GPS情報として配信される/nmea_sentenceの内容がおかしいと思うのですが仕様でしょうか?

    PythonAPIのmap_to_gps()を使用して自車位置の緯度経度を調べると
    - 緯度=37.4162813542274
    - 経度= -122.016468933969
    となっておりBorregas Avenueの正しい位置を示していますが、
    その時の/nmea_sentenceの内容を見ると
    - 緯度=-0.037318
    - 経度=-429.345962
    となっており無効な値が格納されているようです。

    これは仕様でしょうか?
    もし不具合なら今後改善されるのでしょうか?

    パラメータに誤りがあったことが判明したため修正いたしました。申し訳ありません。

    ## VehicleCmdについて
    https://github.com/tier4/aichallenge_bringup#車両の制御コマンド にて

    > 本コンテストにおいてサポートしているコマンドはVehicleCmdの中のcontrol_cmd内部に存在するlinear_acceleration,steering_angleとなります。
    > また、gearの値は必ず64(ドライブ)に設定してください。

    とあります。VehicleCmdのsteering_angleの仕様を明確化して頂きたいです。
    単位や上限値、下限値が不明であるため、現状公開されている情報だけでは実施不能だと考えています。

    単位はDegreeになります。
    上限、下限値はプラスマイナス39.4度となります。

    ## cuDNNについて

    > そのため、オンライン環境にCUDA、cuDNNがインストールされているか、されているとしたらどのバージョンが入っているのかを明記頂く必要があると考えています。

    以前、cuDNNバージョンについて問い合わせさせて頂いていましたがQ&Aに情報なかっためお教え頂けますか?
    深層学習フレームワークによってはcuDNNバージョンに依存しているためです。
    また、cuDNNが使えるかで処理性能も変わるため、タスクのリアルタイム性担保に影響します。

    cuDNNはインストールされておりません。よろしくお願いいたします。
    信号機認識のテストを行っているのですが、「ローカルシミュレーターのセットアップインストラクション」に従って設定を行うと、Front Cameraの画像が広角すぎて信号が小さく見えてしまうのと、解像度が低いのもあって信号検知がうまくできません。
    できればlexus.json及びfront_camera.yamlの内容を修正してカメラの視野角や解像度を変更したいのですが問題ないでしょうか?
    オンラインシミュレーターで実行する際、自前で用意したlexus.json、front_camera.yamlをアップロードして使用することができるでしょうか?
    自作アルゴリズムの動作試験のためカメラの視野角を変更するのは問題ありませんが、オンラインシミュレータで評価する際においてはaichallenge_bringupパッケージ内にサンプルとしておいてあるlexus.jsonのパラメータが使用されます。
    1. saved_waypoints.csv について
      このファイルはサンプルであり使用は想定していないとのことですが、
      A)シナリオ毎に合わせたwaypointsを主催者側で準備する予定 (そのうえでの回避動作等が期待されている)
      B)waypointsの使用は任意であるが、使用するのであれば競技者側で準備
      上記にいずれが期待されているのでしょうか?
    2. 各ファイルが先週段階では日々アップデートが入っておりましたが、現状でおおよそFIXされているのでしょうか?(現在準備中/作業中のものがまだあるのでしょうか?)
    3. 各ファイルについて、改変が可のもの、不可のものについて、明確化頂きたいと思っています。
    4. simulator.pcd については、そのまま利用するのが前提でしょうか?もしくは、各競技者で準備をすることが想定されているのでしょうか? 競技としての範囲、方向性が分かりませんので、教えてください。
      取り急ぎ、回答としては、saved_waypointsのところの考え方を早急にお願いしたいです。
    1. Bとなります。よろしくお願いたします。saved_waypointsはあくまでサンプルでありそのままでは0点となるように調整しております。
    2. おおよそFIXしているという認識です。よろしくお願いいたします。
    3. pcdマップ、lanlet map、lexus.json、aichallenge_bringup.launch以外全て改変可能となります。よろしくお願いいたします。

    > 各シナリオにおける自車両の初期位置に関しましては、配布済みのサンプルシナリオと初期の自車両位置を合わせてあります。ローカルシミュレータにおいて初期位置推定アルゴリズムの動作確認を取っていただければと思います。
    > 自車両の初期位置はサンプルシナリオ通りになります。マップから自己位置を計算する必要がないためタスクはシナリオと同時に開始されます。

    頂いたご回答、Q&Aを拝見してルールが余計にわからなくなったので教えてもらえますか?
    「マップから自己位置を計算する必要がないため」とあるのは今回のタスクで自己位置推定しなくてよいということでしょうか?
    別のご回答でLanelet2情報を使って良いということでしたが、Lanelet2情報を使うには自己位置推定により地図上の自車両の位置姿勢を把握する必要があり、頂いたご回答と矛盾します。

    そうではなくて、自己位置推定はやってよいが、GNSSによる自己位置推定の初期化は
    この大会では想定していなくて、rostopic pubでユーザーが初期位置姿勢を与えることを想定しているのでしょうか?

    いずれのシナリオでも、自己位置推定を用いる方法だけでなく、自己位置推定を用いない方法でも対応できるようにしております。(例えば、白線の認識や前方車両追従の方法などが考えられます)
    初期の自己位置に関しては事前配布シナリオのものから変更はありません、初期姿勢の与え方の一例はaichallenge_bringupパッケージ内に含まれておりますのでご参照ください。

    サンプルのおかげで何とか車両を動かすことができそうです。チュートリアルではシミュレータとのリンクのためgearコマンドを64にせよとありますがそれだけでは動かないと思います。runtime managerではmodeも0以外の数値例えば1とか出力しないとtwist_gateがvehicle_cmdを出力しない設定になってます。

    サーバー上での評価方法とランプをつけるmessage形式についてご教授ください。

    チュートリアルではシナリオのPythonを起動してからユーザーのオリジナルlaunchを実行しろとあります。
    launchを実行するとROSサーバーから立ち上がり各ノードの起動に時間がかかるためシステム環境によりプログラム実行までにかなり時間がかかります。
    実行時間までのタイムラグはシステム依存ですが最低でも10秒程度かかると思います。
    実行時間までに追突したり、信号の停止線を越えてしまうのですがそのタイムラグも参加者側で対応する必要ありますか?
    対策のためにlaunchに組み込むとROSはPython2系なのでシミュレータとのリンクがPython3系しかサポートしていないためできません。docker環境ROSをPython3系にビルドし直し等必要ありますか?

    今回画像処理をさせるため、シミュレータ上での車両のヘッドランプをつけたいのですがlamp_cmdであってますか?
    lamp_cmdを使いたいのですがシミュレータはユーザーが定義するlamp_cmdは受け取れず、autowareが出力するautowaremsg/lamp_cmdしか受け取ってくれないようです。同じmessage名のものはオリジナルノードでビルド出来ませんでした。
    オリジナルノードではランプを付けられないと思うのですが評価環境が夜の場合は無灯火でしか走れないのではないでしょうか?

    これはroslaunch後、タイムラグを考慮し、シナリオの開始までに10秒の時間を空けております。その後、python3 scenario.pyというタイミングで動いています(タイムラグの対策のためにlaunchに組み込むことは想定していません) 。
    一点質問があるのですが、Task3において車のヘッドライトが点灯していないように見えますが、これは仕様でしょうか。これが点灯するかどうかで対応策が変わるため、ご回答いただければ幸いです。
    ヘッドライトが点灯しないのは仕様となっております。信号認識に関し、夜の場合は白線認識が難しいというお問い合わせが多かったため、時間帯を昼に変更させていただきました。
    この変更により、白線認識を用いた走行でも信号認識のシナリオを実行していただくことができるようになります。
    他の手法を用いて走行をできていた皆様に関しましては大変申し訳ありませんが、何卒よろしくお願いいたします。

    オンラインシミュレータでの評価についてご教授ください。
    ソースコードをアップロードとありますが具体的に何をどのようなファイル構成でアップロードすればいいですか?
    launchファイルだけでは動作しないでしょうし、フォルダ構成をあわせないとビルドできないので動作しないと思うのですが。シミュレータ上でどのようにファイルを動作させるのかご教授ください。

    またアップロードできるのは1日1件との事ですが何時にリセットされますか?
    アップロードしたファイルを再編集することは可能ですか?
    シミュレータ上のautowareのバージョンやどんなライブラリがどのバージョンで入っているのかも明確にお願いします。

    オンラインシミュレーションのためのコードアップロード方法等に関するドキュメントをgithub上に追記致しました。
    https://github.com/tier4/aichallenge_bringup

    Q.またアップロードできるのは1日1件との事ですが何時にリセットされますか?
    A.毎日深夜0時にリセットします。

    Q.アップロードしたファイルを再編集することは可能ですか?
    A.一度アップロードして、点数が出ると、アップロード回数にカウントされます。オンラインにアップロードしたオンライン上のファイルは編集出来ません。再編集したものをアップロードすることは、回数制限内であれば問題ありません。

    >> 本コンテストにおいてサポートしているコマンドはVehicleCmdの中のcontrol_cmd内部に存在するlinear_acceleration,steering_angleとなります。
    >> また、gearの値は必ず64(ドライブ)に設定してください。とあります。VehicleCmdのsteering_angleの仕様を明確化して頂きたいです。
    > 単位や上限値、下限値が不明であるため、現状公開されている情報だけでは実施不能だと考えています。
    >
    > 単位はDegreeになります。
    > 上限、下限値はプラスマイナス39.4度となります。

    検証のために1degreeのsteering_angleを与えるコードを実装し、大会シミュレータに与えたところ、1degreeとは思えない旋回をしているため、単位がdegreeであるというご回答は明らかに誤っていると考えています。お手数ですがご確認お願い致します。オンライン評価も始まっていることからご提示された仕様が誤っているようでしたら早急にご提示頂きたいです。
    ※検証用スクリプトを本メールに添付します。

    > Autowareの経路追従モジュールの出力とシミュレータが期待する入力に齟齬が生じている可能性があるのでlinear_accelerationの単位等の仕様を明らかにしてほしいです。

    お手数ですがlinear_accelerationについても仕様のご提示お願い致します。

    > いずれのシナリオでも、自己位置推定を用いる方法だけでなく、自己位置推定を用いない方法でも対応できるようにしております。(例えば、白線の認識や前方車両追従の方法などが考えられます)
    > 初期の自己位置に関しては事前配布シナリオのものから変更はありません、初期姿勢の与え方の一例はaichallenge_bringupパッケージ内に含まれておりますのでご参照ください。

    ご認識されていると思いますが、信号機認識タスクでは夜間かつ無灯火のシーンであるため、藤本様がおっしゃられている「自己位置推定せずに白線認識できる」という主張に無理があるように考えています。お手数ですがご見解を頂きたいです。
    ※スクリーンショットを本メールに添付します。

    本スクリプトを実行し検証を行った所、steering_angleの単位は上限下限の値(プラスマイナス39.4度)を-1~1で正規化したものであることが判明いたしました。大変申し訳ございません。
    アップロードにするソースコードについて下記リポジトリのファイル群に対して、自チームのソースコードを含め、かつ、roslaunchで実行できる状態にしたものを固めてアップロードすると思っていますが認識合っていますでしょうか?
    オンラインシミュレーションのためのコードアップロード方法等に関するドキュメントをgithub上に追記致しました。
    https://github.com/tier4/aichallenge_bringup

    制御コマンドについて不明点があるため確認させてください。
    https://github.com/tier4/aichallenge_bringup には

    > 本コンテストにおいてサポートしているコマンドは
    > VehicleCmdの中のcontrol_cmd内部に存在するlinear_acceleration,steering_angleとなります。

    とあります。制御コマンドの仕様を調べるためにシミュレータ公式のソースコードを読んでいて
    不明点があったのでシミュレータ側のissueで質問しました。
    https://github.com/lgsvl/simulator/issues/721

    その結果、シミュレータ開発者から

    > We are currently working on updating this feature.

    と回答があり、本大会で使用する制御コマンドを使った操作をする機能は現在進行形で開発されていそうです。
    このような開発ステータスでコンテストに用いて問題ないのでしょうか?
    それとも大会配布シミュレータではこれらの機能が独自実装されているということでしょうか?

    twist_cmdに対するLGSVL Simulator応答を確認したところ大きな差異があることが判明し、LGSVLのチームに現状を共有するとともに、代替手段として、linear_accelerationとsteering_angleを用いた制御を本大会では使用することを想定しております。
    Q1. 具体的に提出すべきソースコードがわかりませんでした。
    フォルダは提出できず、1度に1ファイルのみの提出しか受け付けていないようですが、この1ファイルは一体何を提出すれば良いのでしょうか?
    Q2. 複数のソースコードや複数のノードを作成している場合、どのように提出すれば良いのでしょうか?
    オンラインシミュレーションのためのコードアップロード方法等に関するドキュメントをgithub上に追記致しました。
    https://github.com/tier4/aichallenge_bringup
    • 路駐車両の回避について
      ルールにおいて「路駐車両前方のチェックポイント」とありますが、
      このポイントが明示されていないとそこへ向かうことができないと思います。
      そのため、チェックポイントを座標として明示していただけないでしょうか。
    路駐回避後、元いた車線に戻って走行を続けた場合は通常通るべき場所をチェックポイントとして指定しております

    ①アップロードするためのdockerファイルについて教えてください。
    Dockerでビルドが通る+スコアが出ることを確認とありますが、
    dockerファイルを作った場合にユーザーのノードの実行ファイル(○○.py)がdocker上にコピーされないため実行環境をトライできないのですがこれはこちらのやり方が悪いのでしょうか?
    ROSの基本的な使い方の問題ですかね?すみませんがご確認お願いします。

    具体的な事例
    ○下記フォルダで作業開始

    ~/aichallenge_ws/
    ○ホストPCにて下記コマンドでパッケージ作成、colcon buildでビルド

    catkin_create_pkg commander roscpp rospy std_msgs geometry_msgs

    ○ホストPCでroscd commanderとすると下記フォルダに移動。

    ~/aichallenge_ws/install/commander/share/commander

    ○上記フォルダ内にscriptフォルダを作成して実行ファイル(○○.py)を保存

    ※上記の実行ファイル(○○.py)がdockerにはコピーされないためaichallenge.launch(use_node.launch)を実行すると実行ファイルがないためエラーとなります。

    ②シミュレータのアップロード回数制限について

    シミュレータにおけるアップロード回数制限ですが、0点の評価を受けてもアップロード回数が減るのでしょうか?アップロード回数をwebページに表示するように変更できませんか?

    そもそもシミュレータの評価もブラックボックスになっていますし、デバックできず参加者が対応できないためTotalの回数制限の撤廃、1日のアップロード回数の増加していただけませんか?
    同じ制御コマンドでもホストPCとクラウド上での処理能力の違いなのかわかりませんが、評価結果が異なるため微調整が必要だと感じています。

    アップロード方法のインストラクションは公平性の観点で詳細には説明できませんが、以下を参考に確認いただけると幸いです。
    • CMakelistにpython scriptが入っているか(CMakelistに適切に記述することで、colcon build時にpython scriptをインストールできます)
    • launchのノード名が重複していないか(aichallenge.launchの方を実行できるようにする)
    アクセル制御(前方車両との車間距離維持)
    アクセルコントロール課題では車線維持もタスクの1部となっており車線をはみ出るとゼロ点になるようです。
    シナリオ開始時の車両姿勢に微妙にバラツキがあって走行距離が長くなるとアクセルコントロールだけでは車線をはみ出てゼロ点になるケースが出てしまうようです。
    それについてはそのような環境は評価環境として設定されていないのか、シミュレータ上で対策されているのか、もしくは参加者側で対策が必要なのかご教授ください。
    本シミュレータでサポートされているautoware_msgs/VehicleCmd型ではステアリングの制御も可能となっております。詳細はaichallenge_bringupパッケージのREADMEをご参照ください。
    路駐車両の回避
    駐車両の前側を通過とありますが具体的にどこを通過すればいいのかご確認お願いします。走行ルート以外にシナリオ評価が終わるような条件はないのでしょうか?
    ほぼ同じルートを通過しているのにキーボード操作の際は点数が出ますが、プログラム操作(twist_gate使用)の場合は点数がゼロ点になることが多く条件がよくわかりません。シナリオ評価の条件を具体的にご指示いただけないでしょうか?
    通過目標点は自車両スポーン位置の33m前方にございます。
    自車両スポーン位置から前方に33mにある半径3mの球の領域に自車が侵入した場合路駐回避が成功したものと判定されます。

    アップロード方法で不明点があったので確認させてください。
    https://github.com/tier4/aichallenge_bringup にある説明のとおりに圧縮しようとしています。

    圧縮用の以下のスクリプトでPCDファイルは圧縮の対象外となっています。
    こちらはオンライン環境に既に入っているためだと思っていますが認識合っていますか?
    https://github.com/tier4/aichallenge_bringup/blob/master/create-tar-file.sh

    また、圧縮する時の手順は以下のようになっています。
    cp create-tar-file.sh ~/aichallenge_ws/
    cd ~/aichallenge_ws/
    ./create-tar-file.sh

    aichallenge_ws/src/aichallenge_bringup <----- 前述のGitHubリポジトリにある大会ソースコード
    aichallenge_ws/src/xxxxxxx <-----これは自チームの開発したソースコード

    という構成にして圧縮するものだと思っていますが、aichallenge_ws自体がこのリポジトリにないこととと、create-tar-file.shはaichallenge_bringup以下にあることから素直にREADME通りにやると実行できないので確認させてください。

    また、このディレクトリ構成で合っているとすると、オンライン環境でPCDファイルがどのように配置されるかがよくわからなかったので確認させてください。

    仰るとおり、PCDファイルはサイズが大きいのでオンライン環境に組み込まれています。採点時には`roslaunch ai_challenge_bringup aichallenge_bringup.launch pcd_file_path:='オンライン環境上のpcdファイルへのパス' `というように起動されますので、pcdファイルへのパスが必要な場合はpcd_file_pathの値をご使用ください。
    • 圧縮する手順の例では、$HOME以下にaichallenge_wsというワークスペースがあり、aichallenge_ws/src/以下にaichallenge_bringupをはじめとするパッケージが並ぶことを想定しています。オンライン環境ではpcdファイルはこのワークスペースの外に設置されています。
    ファイルのアップ手順でスコアが出ることを確認する際、ROS bridgeとシミュレータの接続に失敗するケースがあるのですが把握されてますでしょうか?
    チェックしてみましたがbridgeとapiのコネクションはうまくいっているようです。 (1)採点サーバー上では接続待ちのコードが入っている (2)ログでも接続はされているようだったので、その他に原因があるのではないかと思われます。 ノードをいくつか起動してるようですので、roslaunch後のシナリオ開始までの10秒に間に合っていないのかもしれません。(シナリオ開始までの時間について複数問い合わせをいただいたので、30秒に延長いたしました)

    Windows上でシミュレーターを動作させようとしているのですが、
    acc.pyなどのシナリオは動作して、車を操作できるのですが、/acc/scoreなどのrostopicがシミュレーターから配信されません。
    何がいけないのでしょうか?

    Ubuntu 18.04で、aichallenge_bringup.launchの起動と、シナリオの実行を行っており、Windows上でLGSVLシミュレーターを起動しています。
    ↓ のLSGVLの設定をいろいろ変えて試してみましたが解決しませんでした。
    https://www.lgsvlsimulator.com/docs/config-and-cmd-line-params/

    AIチャレンジのバイナリを使用してるか確認をお願いします。
    先日、実行時にシミュレータとの接続が失敗するケースがあることをお伝えしましたが、対応策として、こちらで見つけました、接続を待つ処理を入れるべきだと思います。
    https://github.com/lgsvl/PythonAPI/blob/master/quickstart/22-connecting-bridge.py
    roslaunchを先に済ませ、rosbridgeが起動した状態でpython apiを立ち上げたときは、この接続の問題は起きないと想定してこのスクリプトにしていました。ただクラウド上の評価シナリオでは実際には上述の通りの接続待ちの処理が入っているので、接続失敗によって点数が出ない、ということは起こらないようにしています。
    https://github.com/tier4/aichallenge_bringup/issues/11#issuecomment-619346918
    このissueに書きました通り、Dockerfileに不備があります。
    この不備により、rosdepによる依存関係の解決ができない状況となっております。
    ローカルテスト、オンラインシミュレーター環境両方でDockerfileを更新し、rodepによる依存関係解決が出来る事を確認して頂けないでしょうか。
    ご指摘の状況を確認しましたので修正いたします。

    ≪ 前のページへ戻る

    PAGE TOP