協力#
関連するAPI#
- /api/planning/velocity_factors
- /api/planning/steering_factors
- /api/planning/cooperation/set_commands
- /api/planning/cooperation/set_policies
- /api/planning/cooperation/get_policies
説明#
協力要請(RTC)は、人間のオペレーターが自動運転モードでの決定をサポートできるようにする機能です。 Autoware は通常、独自の決定に基づいて車両を運転しますが、実験や複雑な状況ではオペレーターが決定を下すことを好む場合があります。
計画コンポーネントは、意思決定が必要な各状況をシーンとして管理します。 各シーンにはIDがあり、シーンが完了するかキャンセルされるまで変更されません。 オペレータは、この ID を使用してターゲット シーンの決定を無効にすることができます。 実際には、ユーザーインターフェイスアプリケーションはIDの仕様を隠し、抽象化されたインターフェイスをオペレーターに提供できます。
たとえば、次の図の状況では、車両は2回の車線変更と交差点での左折を行うことが予想されます。 したがって、計画コンポーネントは、必要なアクションごとに3つのシーンインスタンスを生成し、各シーンインスタンスは決定が下されるまで待機しますが、この場合は、"車線変更または維持"と"左折または交差点での待機"です。 ここで Autoware は障害物のため2回目の車線変更は行わないと判断し、車両はそこで停止します。 ただし、オペレーターはRTC機能を通じてその決定を上書きし、車両が目的地に到達できるように車線変更を強制することができます。 RTCを使用すると、オペレーターはこれらの決定を無効にして、車両を目標まで運転し続けることができます。
アーキテクチャ#
RTC をサポートするモジュールには、モジュールの決定に加えて、以下に示すように、オペレーターの決定と連携ポリシーがあります。 これらのモジュールは、車両の動作を計画するときに、これらの値によって決定される統合された決定を使用します。 これらの値の詳細については、決定セクションを参照してください。 連携ポリシーは、オペレータの決定がない場合に使用され、システム設定によってデフォルト値が設定されます。 モジュールがRTCをサポートしている場合、これらの情報は、連携ステータスとして速度係数またはステアリング係数で利用できます。
順序#
これは、シーンの決定を無効にして車線変更を強制するシーケンスの例です。これは、アーキテクチャセクションの図の2番目のシーンです。 ここでは、連携ポリシーがオプションに設定されていると仮定します。詳細については、後で説明する決定セクションを参照してください。
- 計画モジュールは、車線変更が必要な場所に近づくと、一意のIDを持つシーンインスタンスを作成します。
- シーン インスタンスは、現在の状況からモジュールの決定を生成します。この場合、モジュールは障害物のため車線変更を行わないことを決定します。
- シーンインスタンスはマージされた決定を生成します。この時点ではまだオペレーターの決定がないため、モジュールの決定に基づきます。
- シーンインスタンスは、マージされた決定に従って車線を維持するように車両を計画します。
- シーンインスタンスは連携ステータスを送信します。
- オペレータは連携状況を受信します。
- オペレーターは、モジュールの決定を無効にして車線変更を行うための協力コマンドを送信します。
- シーンインスタンスは連携コマンドを受信し、オペレーターの決定を更新します。
- シーンインスタンスは、現在の状況からモジュールの決定を更新します。
- シーンインスタンスはマージされた決定を更新します。これはオペレーターが受け取った決定に基づいています。
- シーンインスタンスは、統合された決定に従って車両が車線を変更するように計画します。
決定#
統合決定は、モジュール決定、オペレーター決定、連携ポリシーによって決定され、それぞれ次の表に示す値になります。
状態 | 値 |
---|---|
統合された決定 | 非アクティブ化、活性化 |
モジュールの決定 | 非アクティブ化、活性化 |
オペレーターの決定 | 非アクティブ化、活性化、自律的、なし |
連携ポリシー | 必須、オプション |
これらの値の意味は以下のとおりです。連携ポリシーはモジュールごとに共通であるため、変更すると同じモジュール内のすべてのシーンに影響することに注意してください。
値 | 説明 |
---|---|
非アクティブ化 | 安全性を優先して車両の動作を計画するためのオペレーター/モジュールの決定。 |
活性化 | 運転を優先して車両の動作を計画するためのオペレーター/モジュールの決定。 |
自律的 | モジュールの決定に続くオペレーターの決定。 |
なし | オペレーター決定の初期値。オペレーター決定がまだないことを示します。 |
必須 | 運転を継続するためにオペレーターの判断を必要とするポリシー。 |
オプション | 運転を継続するためにオペレーターの判断を必要としないポリシー。 |
統合決定がどのように決定されるかについては、次のような流れになります。
例#
車線変更モジュールの連携例です。判定の組み合わせによる動作は以下の通りです。
オペレーターの判断 | ポリシー | モジュールの決定 | 説明 |
---|---|---|---|
非アクティブ化 | - | - | オペレーターはモジュールの決定に関係なく車線を維持するよう指示します。したがって、車両はオペレーターの判断によって車線を維持します。 |
活性化 | - | - | オペレーターはモジュールの決定に関係なく車線変更を指示します。したがって、車両はオペレーターの判断によって車線を変更します。 |
自律的 | - | 非アクティブ化 | オペレータはモジュールの決定に従うように指示します。したがって、車両はモジュールの決定によって車線を維持します。 |
自律的 | - | 活性化 | オペレータはモジュールの決定に従うように指示します。したがって、車両はモジュールの決定によって車線を変更します。 |
なし | 必須 | - | オペレーターの指示がないため、必要なポリシーが使用されます。したがって、車両は協力ポリシーによって車線を維持します。 |
なし | オプション | 非アクティブ化 | オペレータの指示がないため、オプションのポリシーが使用されます。したがって、車両はモジュールの決定によって車線を維持します。 |
なし | オプション | 活性化 | オペレータの指示がないため、オプションのポリシーが使用されます。したがって、車両はモジュールの決定によって車線を変更します。 |