From 879490064cafd083121a0cf6d4d42fb7588b9eb0 Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Wed, 7 Jun 2023 21:15:19 +0900 Subject: [PATCH 01/19] tmp Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- .../autoware-architecture/planning/index.md | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/docs/design/autoware-architecture/planning/index.md b/docs/design/autoware-architecture/planning/index.md index a422dfd96e2..5ec3e3f26eb 100644 --- a/docs/design/autoware-architecture/planning/index.md +++ b/docs/design/autoware-architecture/planning/index.md @@ -1,10 +1,18 @@ # Planning component design +## Purpose of this document + +TODO: 背景と目的の認識合意、誰にどのように使われるかを明確に記載する。 + +この文書は、Planning Componentの開発における目標やハイレベルな設計戦略、およびそれに関連する意思決定とその理由を説明します。このドキュメントを通じて、すべてのOSS開発者は、Planning Componentがどのような設計思想や制約のもとで設計され、どのような目標を達成するために開発が行われているのかを理解することができます。これにより、円滑な開発参加が可能となります。 + +さらに、(これらの情報は将来的に分離して管理されるかもしれませんが、)具体的なリファレンス実装や提供される機能の一覧も後半に記載されています。これにより、開発者やユーザーは、Planning Componentを使用することで現在何が可能なのか、機能をどのように活用したり、拡張したり、追加したりすることができるのかを理解することができます。 + ## Overview -The Planning component generates the trajectory message that will be subscribed to by the Control component based on the environmental state obtained from the Localization and the Perception components. +The Planning component generates the trajectory message that will be subscribed to by the Control component based on the environmental state obtained from the Localization and the Perception components. This component design follows the overarching philosophy of Autoware, defined as the [microautonomy concept](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts/). -## Requirements +## Goals and non-goals The goal of the Planning component is to generate a trajectory (path and velocity) of the ego vehicle that is safe and well-regulated while satisfying the given mission. @@ -22,6 +30,13 @@ The goal of the Planning component is to generate a trajectory (path and velocit - The Planning component is not designed to always outperform human drivers. - The Planning component is not capable of “never crashes”. +## Requirements + +ここはGoalとかではなく、Pythonで書く必要がある、みたいなことを書く。PlanningにRequirementsって何がある? + +## Assumptions + +高島さん曰く、ここにAssumptiosがあった方が良いらしいが、例えばどんなことだろう? ## High-level architecture This diagram describes the high-level architecture of the Planning Component. @@ -30,7 +45,7 @@ This diagram describes the high-level architecture of the Planning Component. The Planning component consists of the following sub-components: -- **Mission Planning**: Calculates the route based on the given goal and map information. +- **Mission Planning**: Calculates the route from a starting position and a given goal based on map information. - **Scenario Planning**: Determines the trajectory based on the current scenario, such as Lane Driving or Parking. - **Lane Driving**: Calculates the trajectory for driving within constructed lanes. - **Behavior Planner**: Calculates suitable trajectory based on safety considerations and traffic rules. From 33dd7c637883b4c7f6aa02291f9d22e6751e0eb3 Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Mon, 19 Jun 2023 18:19:00 +0900 Subject: [PATCH 02/19] update Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- .../high-level-planning-diagram.drawio.svg | 336 +++++++++++++----- .../autoware-architecture/planning/index.md | 70 +++- 2 files changed, 306 insertions(+), 100 deletions(-) diff --git a/docs/design/autoware-architecture/planning/image/high-level-planning-diagram.drawio.svg b/docs/design/autoware-architecture/planning/image/high-level-planning-diagram.drawio.svg index bbf860704b2..f83c6c25a09 100644 --- a/docs/design/autoware-architecture/planning/image/high-level-planning-diagram.drawio.svg +++ b/docs/design/autoware-architecture/planning/image/high-level-planning-diagram.drawio.svg @@ -1,6 +1,24 @@ -<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="761px" height="836px" viewBox="-0.5 -0.5 761 836" content="<mxfile><diagram id="8qt1-HtFgWOiWtJ-FPd8" name="planning (v0.13.0)">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</diagram></mxfile>"> +<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1231px" height="836px" viewBox="-0.5 -0.5 1231 836" content="<mxfile><diagram id="8qt1-HtFgWOiWtJ-FPd8" name="planning (v0.13.0)">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</diagram></mxfile>"> <defs/> <g> + <rect x="970" y="50" width="260" height="190" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 258px; height: 1px; padding-top: 57px; margin-left: 971px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <br/> + Legend + </div> + </div> + </div> + </foreignObject> + <text x="1100" y="69" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Legend + </text> + </switch> + </g> <path d="M 80 131.76 L 145.76 131.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 157.76 131.78 L 145.76 137.77 L 145.77 125.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <rect x="0" y="466" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> @@ -67,11 +85,11 @@ </text> </switch> </g> - <rect x="160" y="0" width="600" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="160" y="0" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 598px; height: 1px; padding-top: 25px; margin-left: 161px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 25px; margin-left: 161px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> API Layer @@ -79,21 +97,21 @@ </div> </div> </foreignObject> - <text x="460" y="29" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="545" y="29" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> API Layer </text> </switch> </g> - <path d="M 610 102.05 L 610 64.24" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 610 52.24 L 616 64.24 L 604 64.24 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="160" y="102.05" width="600" height="637.95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> - <path d="M 460 210 Q 460 210 460 225.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 460 237.76 L 454 225.76 L 466 225.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="220" y="154" width="480" height="56" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <path d="M 737.5 102.05 L 737.5 64.24" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 737.5 52.24 L 743.5 64.24 L 731.5 64.24 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="160" y="102.05" width="770" height="637.95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <path d="M 545 210 Q 545 210 545 225.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 545 237.76 L 539 225.76 L 551 225.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="220" y="154" width="650" height="56" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 478px; height: 1px; padding-top: 182px; margin-left: 221px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 182px; margin-left: 221px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <b> @@ -103,16 +121,16 @@ </div> </div> </foreignObject> - <text x="460" y="186" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="545" y="186" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Mission Planning </text> </switch> </g> - <rect x="220" y="240" width="480" height="390" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="220" y="240" width="650" height="390" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 478px; height: 1px; padding-top: 247px; margin-left: 221px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 247px; margin-left: 221px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <b> @@ -123,16 +141,16 @@ </div> </div> </foreignObject> - <text x="460" y="259" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="545" y="259" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Scenario Planning </text> </switch> </g> - <rect x="245" y="300" width="265" height="290" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="255" y="300" width="395" height="290" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 263px; height: 1px; padding-top: 307px; margin-left: 246px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 393px; height: 1px; padding-top: 307px; margin-left: 256px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <b> @@ -143,18 +161,18 @@ </div> </div> </foreignObject> - <text x="378" y="319" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="453" y="319" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Lane Driving Scenario </text> </switch> </g> - <path d="M 607.5 590 L 607.5 610 L 460 610 L 460 645.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 460 657.76 L 454 645.76 L 466 645.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="540" y="300" width="135" height="290" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <path d="M 767.5 590 L 767.5 610 L 608 610 L 545 610 L 545 645.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 545 657.76 L 539 645.76 L 551 645.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="700" y="300" width="135" height="290" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 133px; height: 1px; padding-top: 307px; margin-left: 541px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 133px; height: 1px; padding-top: 307px; margin-left: 701px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <b> @@ -165,18 +183,18 @@ </div> </div> </foreignObject> - <text x="608" y="319" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="768" y="319" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Parking Scenario </text> </switch> </g> - <path d="M 377.5 445 Q 377.5 445 377.5 461.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 377.5 473.76 L 371.5 461.76 L 383.5 461.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="265" y="350" width="225" height="95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <path d="M 452.5 445 Q 452.5 445 452.5 461.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 452.5 473.76 L 446.5 461.76 L 458.5 461.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="275" y="350" width="355" height="95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 223px; height: 1px; padding-top: 357px; margin-left: 266px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 353px; height: 1px; padding-top: 357px; margin-left: 276px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <b> @@ -186,18 +204,18 @@ </div> </div> </foreignObject> - <text x="378" y="369" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="453" y="369" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Behavior Planning </text> </switch> </g> - <path d="M 377.5 571 L 377.5 610 L 460 610 L 460 645.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 460 657.76 L 454 645.76 L 466 645.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="265" y="476" width="225" height="95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <path d="M 452.5 571 L 452.5 610 L 545 610 L 545 645.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 545 657.76 L 539 645.76 L 551 645.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="275" y="476" width="355" height="95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 223px; height: 1px; padding-top: 483px; margin-left: 266px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 353px; height: 1px; padding-top: 483px; margin-left: 276px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <b> @@ -207,18 +225,18 @@ </div> </div> </foreignObject> - <text x="378" y="495" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="453" y="495" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Motion Planning </text> </switch> </g> - <path d="M 460 716 L 460 765.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 460 777.76 L 454 765.76 L 466 765.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="220" y="660" width="480" height="56" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <path d="M 545 716 L 545 769.81" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 545 781.81 L 539 769.81 L 551 769.81 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="220" y="660" width="650" height="56" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 478px; height: 1px; padding-top: 688px; margin-left: 221px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 688px; margin-left: 221px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <b> @@ -228,16 +246,16 @@ </div> </div> </foreignObject> - <text x="460" y="692" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="545" y="692" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Validation </text> </switch> </g> - <rect x="160" y="784.05" width="600" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="160" y="784.05" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 598px; height: 1px; padding-top: 809px; margin-left: 161px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 809px; margin-left: 161px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> Control Component @@ -245,7 +263,7 @@ </div> </div> </foreignObject> - <text x="460" y="813" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="545" y="813" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Control Component </text> </switch> @@ -270,8 +288,8 @@ </text> </switch> </g> - <path d="M 460 54 L 460 139.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 460 151.76 L 454 139.76 L 466 139.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 545 54 L 545 139.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 545 151.76 L 539 139.76 L 551 139.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <rect x="0" y="610" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> @@ -315,11 +333,11 @@ </text> </switch> </g> - <rect x="283" y="383.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="293" y="383.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 393px; margin-left: 284px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 393px; margin-left: 294px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> @@ -329,16 +347,16 @@ </div> </div> </foreignObject> - <text x="328" y="396" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="338" y="396" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Lane Change </text> </switch> </g> - <rect x="389" y="383.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="408" y="383.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 393px; margin-left: 390px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 393px; margin-left: 409px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> @@ -348,16 +366,16 @@ </div> </div> </foreignObject> - <text x="434" y="396" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="453" y="396" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Intersection </text> </switch> </g> - <rect x="283" y="414.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="520" y="383.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 424px; margin-left: 284px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 393px; margin-left: 521px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> @@ -367,16 +385,16 @@ </div> </div> </foreignObject> - <text x="328" y="427" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="565" y="396" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Crosswalk </text> </switch> </g> - <rect x="389" y="414.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="520" y="413.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 424px; margin-left: 390px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 423px; margin-left: 521px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <div style=""> @@ -386,16 +404,16 @@ </div> </div> </foreignObject> - <text x="434" y="427" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="565" y="426" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> etc... </text> </switch> </g> - <rect x="283" y="513.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="293" y="513.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 523px; margin-left: 284px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 523px; margin-left: 294px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> @@ -405,16 +423,16 @@ </div> </div> </foreignObject> - <text x="328" y="526" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="338" y="526" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Path Smooth </text> </switch> </g> - <rect x="386" y="513.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="408" y="513.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 523px; margin-left: 387px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 523px; margin-left: 409px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> @@ -424,16 +442,16 @@ </div> </div> </foreignObject> - <text x="431" y="526" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="453" y="526" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Velocity Smooth </text> </switch> </g> - <rect x="283" y="544.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="293" y="544.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 554px; margin-left: 284px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 554px; margin-left: 294px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> @@ -443,16 +461,16 @@ </div> </div> </foreignObject> - <text x="328" y="557" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="338" y="557" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Collision Check </text> </switch> </g> - <rect x="386" y="544.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="520" y="544.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 554px; margin-left: 387px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 554px; margin-left: 521px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <div style=""> @@ -462,16 +480,16 @@ </div> </div> </foreignObject> - <text x="431" y="557" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="565" y="557" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> etc... </text> </switch> </g> - <rect x="562" y="393.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="722" y="393.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 403px; margin-left: 563px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 403px; margin-left: 723px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> @@ -481,16 +499,16 @@ </div> </div> </foreignObject> - <text x="607" y="406" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="767" y="406" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Free Space </text> </switch> </g> - <rect x="562" y="424.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="722" y="424.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 434px; margin-left: 563px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 434px; margin-left: 723px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> @@ -500,16 +518,16 @@ </div> </div> </foreignObject> - <text x="607" y="437" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="767" y="437" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Cost map </text> </switch> </g> - <rect x="562" y="457.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="722" y="457.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 467px; margin-left: 563px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 467px; margin-left: 723px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <div style=""> @@ -519,7 +537,7 @@ </div> </div> </foreignObject> - <text x="607" y="470" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="767" y="470" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> etc... </text> </switch> @@ -532,41 +550,187 @@ <path d="M 157.76 531.78 L 145.76 537.77 L 145.77 525.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <path d="M 94.56 675.11 L 160 674.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 82.56 675.15 L 94.53 669.11 L 94.58 681.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="550" y="684.52" width="122" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="672" y="175" width="122" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 120px; height: 1px; padding-top: 694px; margin-left: 551px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 120px; height: 1px; padding-top: 184px; margin-left: 673px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - Trajectory Validation + Route Planning </div> </div> </div> </div> </foreignObject> - <text x="611" y="697" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Trajectory Validation + <text x="733" y="188" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Route Planning </text> </switch> </g> - <rect x="550" y="176.52" width="122" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="293" y="413.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 120px; height: 1px; padding-top: 186px; margin-left: 551px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 423px; margin-left: 294px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - Route Planning + Avoidance </div> </div> </div> </div> </foreignObject> - <text x="611" y="189" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Route Planning + <text x="338" y="426" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Avoidance + </text> + </switch> + </g> + <rect x="408" y="413.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 423px; margin-left: 409px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Pull Over + </div> + </div> + </div> + </div> + </foreignObject> + <text x="453" y="426" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Pull Over + </text> + </switch> + </g> + <rect x="520" y="513.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 523px; margin-left: 521px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Drivable Area + </div> + </div> + </div> + </div> + </foreignObject> + <text x="565" y="526" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Drivable Area + </text> + </switch> + </g> + <rect x="408" y="544.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 554px; margin-left: 409px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Slow Down + </div> + </div> + </div> + </div> + </foreignObject> + <text x="453" y="557" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Slow Down + </text> + </switch> + </g> + <rect x="633" y="678.51" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 688px; margin-left: 634px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + TTC Check + </div> + </div> + </div> + </div> + </foreignObject> + <text x="678" y="691" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + TTC Check + </text> + </switch> + </g> + <rect x="743" y="678.51" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 688px; margin-left: 744px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + ACC Check + </div> + </div> + </div> + </div> + </foreignObject> + <text x="788" y="691" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + ACC Check + </text> + </switch> + </g> + <rect x="1010" y="101.05" width="180" height="27.95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 108px; margin-left: 1011px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Planning (Sub) Components + </div> + </div> + </div> + </foreignObject> + <text x="1100" y="120" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Planning (Sub) Components + </text> + </switch> + </g> + <rect x="1010" y="145.05" width="180" height="27.95" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 152px; margin-left: 1011px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Planning Modules + </div> + </div> + </div> + </foreignObject> + <text x="1100" y="164" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Planning Modules + </text> + </switch> + </g> + <rect x="1010" y="191" width="180" height="27.95" fill="#f5f5f5" stroke="#000000" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 198px; margin-left: 1011px;"> + <div data-drawio-colors="color: #000000; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Other Components + </div> + </div> + </div> + </foreignObject> + <text x="1100" y="210" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Other Components </text> </switch> </g> diff --git a/docs/design/autoware-architecture/planning/index.md b/docs/design/autoware-architecture/planning/index.md index 5ec3e3f26eb..ef56be959d6 100644 --- a/docs/design/autoware-architecture/planning/index.md +++ b/docs/design/autoware-architecture/planning/index.md @@ -1,12 +1,17 @@ # Planning component design + ## Purpose of this document -TODO: 背景と目的の認識合意、誰にどのように使われるかを明確に記載する。 +<!-- この文書は、Planning Componentの開発における目標やハイレベルな設計戦略、およびそれに関連する意思決定とその理由を説明します。このドキュメントを通じて、すべてのOSS開発者は、Planning Componentがどのような設計思想や制約のもとで設計され、どのような目標を達成するために開発が行われているのかを理解することができます。これにより、円滑な開発参加が可能となります。 + +さらに、(これらの情報は将来的に分離して管理されるかもしれませんが、)具体的なリファレンス実装や提供される機能の一覧も後半に記載されています。これにより、開発者やユーザーは、Planning Componentを使用することで現在何が可能なのか、機能をどのように活用したり、拡張したり、追加したりすることができるのかを理解することができます。 --> + -この文書は、Planning Componentの開発における目標やハイレベルな設計戦略、およびそれに関連する意思決定とその理由を説明します。このドキュメントを通じて、すべてのOSS開発者は、Planning Componentがどのような設計思想や制約のもとで設計され、どのような目標を達成するために開発が行われているのかを理解することができます。これにより、円滑な開発参加が可能となります。 +This document outlines the goals, high-level design strategies, and related rationales in the development of the Planning Component. Through this document, all OSS developers will be able to comprehend the design philosophy and constraints under which the Planning Component is designed, and the goals driving its development. This will enable them to participate seamlessly in the development. + +Furthermore, a list of concrete reference implementations and provided features is also included in the latter part of this document, while this information might be managed separately in the future. This allows developers and users to understand what is currently possible with the Planning Component, how to utilize, expand, or add to its features. -さらに、(これらの情報は将来的に分離して管理されるかもしれませんが、)具体的なリファレンス実装や提供される機能の一覧も後半に記載されています。これにより、開発者やユーザーは、Planning Componentを使用することで現在何が可能なのか、機能をどのように活用したり、拡張したり、追加したりすることができるのかを理解することができます。 ## Overview @@ -14,30 +19,44 @@ The Planning component generates the trajectory message that will be subscribed ## Goals and non-goals -The goal of the Planning component is to generate a trajectory (path and velocity) of the ego vehicle that is safe and well-regulated while satisfying the given mission. +The goal of the Planning component is to generate a trajectory (path and velocity) of the self-driving vehicle that is safe and well-regulated while satisfying the given mission. + +<!-- 全体の設計においては、microautonomyのコンセプトに従い、適切なモジュール化と明確なインターフェース定義、およびそれにって得られる高い拡張性を重要視します。すなわち、Autowareにおけるplanningモジュールの目的は、世の中すべての複雑なUseCaseを達成することではなく(もちろん基本的なUseCaseが達成できるレベルのソフトはベースとして提供されるべきですが)、ユーザーの要求レベルに合わせて適切にカスタマイズできる(更には必要な機能が適切に追加開発できる)platformを提供することです。 --> + +In our overall design, we emphasize the concept of "microautonomy". This term refers to a design approach that focuses on the proper modularization of functions, clear definition of interfaces between these modules, and as a result, high expandability of the system. + +The purpose of the planning module in our Autoware system is not to solve every conceivable complex use case (although we do aim to support basic ones), but rather to provide a platform that can be customized to the user's needs and can facilitate the development of additional features. **Goals:** -- The basic functions are provided so that a simple ODD can be defined. +- The basic functions are provided so that a simple ODD (Operational Design Domain) can be defined. - The functionality is modularized to accommodate the third-party components. That is, a complicated or realistic ODD needs not be defined by the basic functions provided by default. - The capability is extensible with the third-party components or the decision of human operators. -- The mechanism and policy are separated to allow the system or operators to change the behavior of the ego vehicle. Ultimately speaking, the policy can be set to crash an obstacle and the mechanism always follows. Otherwise, the system is not safe from the design point of view. + +<!-- Not sure what the following says. --> + <!-- - The mechanism and policy are separated to allow the system or operators to change the behavior of the ego vehicle. Ultimately speaking, the policy can be set to crash an obstacle and the mechanism always follows. Otherwise, the system is not safe from the design point of view. --> **Non-goals:** -- The Planning component is not self-contained but can be extended with third parties. + +The following points are listed as non-goals, intended to clarify our design concepts. However, it's important to note that while we do not demand a "never crash" capability as listed below, our architecture should still be designed in a manner that could accommodate the needs to achieve a "never crash" state through third-party extensions or future enhancements. + +- The Planning component is not self-contained but can be extended and enhanced with third parties. - The Planning component is not aimed at the complete functionality and capability. - The Planning component is not designed to always outperform human drivers. - The Planning component is not capable of “never crashes”. + While "never crashes" is not a present goals, we need to create an architecture that can potentially achieve such a state with third-party components or decision of human operators or future enhancement. + + ## Requirements ここはGoalとかではなく、Pythonで書く必要がある、みたいなことを書く。PlanningにRequirementsって何がある? ## Assumptions -高島さん曰く、ここにAssumptiosがあった方が良いらしいが、例えばどんなことだろう? -## High-level architecture +Assumptiosがあった方が良いらしいが、例えばどんなことだろう? +## High level design This diagram describes the high-level architecture of the Planning Component. @@ -53,9 +72,28 @@ The Planning component consists of the following sub-components: - **Parking**: Calculates the trajectory for parking in unstructured areas. - **Validation**: Verifies the safety of the trajectory. -Each component contains some modules that can be dynamically loaded and unloaded based on the situation. For instance, the Behavior Planning component includes modules such as lane change, intersection, and crosswalk modules. +Following the microautonomy architecture, we adopt a modular system framework where the tasks are implemented as modules that can be dynamically loaded and unloaded to achieve different features depending on the given use cases. For instance, the Behavior Planning component includes modules such as lane change, intersection, and crosswalk modules. -Our planning components are built based on the microautonomy architecture with Autoware. We adopt a modular system framework where the tasks are implemented as modules that can be dynamically loaded and unloaded to achieve different features depending on the given use cases. + +<!-- **Rationale** +Planningと各Componentの分離について。planningとperceptionやcontrol componentを分離して開発することにより、third-party のperception component などとの連携は非常に簡単に実行できる(利用するコンポーネントを切り替えるだけである)。しかし、ここには性能と拡張性のトレードオフが存在する。例えば、perception componentは本来planning componentが必要とする物体に対してのみ認識と移動予測を行えば十分であるが、componentを分離するとこのような密なコミュニケーションを行うことができない。また、計画と制御の分離によって、車両運動性能を適切に考慮した上で計画を行うことが難しくなる。これを補うためには、interfaceでやり取りをする情報を増やす必要があったり、計算量を増やす必要が出てくる。 + +**Rationale** +Scenario Planningレイヤーの導入について。レーン構造が整備されているエリアでの走行と、駐車場のようなフリースペースエリアの走行ではインターフェースの定義や利用可能な情報のレベルが異なる。例えば、Lane Drivingでは地図のIDがついた経路を取り扱えるのに対し、これはフリースペースでの計画に対して適切ではない。また今後さらに異なるインターフェースを持つべきシナリオが現れた際に柔軟に対応できるように、シナリオレベルでplanningのコンポーネントを切り替えるという仕組みを導入している。一方で、異なるシナリオ間でモジュールを再利用できない点は課題として残っている。 + +**Rationale** +BehaviorとMotionの分離について。Planning全体を振る舞いを決定する「Behavior」と、最終的な運動動作を決定する「Motion」に分離することは王道のアプローチである。ただしこれは性能とのトレードオフであり、機能を分離するほど性能が劣化する。例えば、Behaviorは最終的にMotionがどのような計算をするかを知る前に判断を行わなければならず、一般的に保守的な判断を行うことになる。一方で、behaviorとmotionを結合したシステムでは判断と乗り心地といった概念が結合しており、機能の拡張性の面で課題が残る。我々は拡張性を重要視し、behavior-motionの構成で開発を進めている。(昔に議論された[こちらの資料](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/main/docs/design/software_architecture/Planning/DesignRationale.md)も役に立つ。) --> + + +**Rationale for the separation of planning and other components** + By developing the planning, perception, localzition, and control components separately, it becomes easy to collaborate with third-party components in the component level. However, there's a trade-off between performance and extensibility here. For instance, a perception component would ideally perform recognition and motion prediction only for the objects that the planning component needs, but separating the components hinders such close communication. Additionally, separating planning and control makes it harder to consider vehicle motion performance when planning. To compensate for this, it's necessary to either increase the information exchanged via the interface or increase the computation load. + + +**Rationale for introducing the Scenario Planning layer** +The definition of the interface and the level of available information vary between driving in an area with well-structured lanes and driving in a free-space area like a parking lot. For example, while Lane Driving can handle routes with map IDs, this is not appropriate for planning in free space. To flexibly handle future scenarios that might require different interfaces, we have introduced a mechanism that switches planning components at the scenario level. However, a remaining issue is the inability to reuse modules across different scenarios. + +**Rationale for the separation of Behavior and Motion** +The classic approach to Planning involves dividing it into 'Behavior', which decides the action, and 'Motion', which determines the final movement. However, this separation implies a trade-off with performance, as performance tends to degrade with increasing separation of functions. For example, Behavior needs to make decisions without prior knowledge of the computations that Motion will eventually perform, which generally results in conservative decision-making. On the other hand, if behavior and motion are integrated, motion performance and decision-making become interdependent, creating challenges in terms of expandability, such as when you wish to extend only the decision-making function to follow a regional traffic rules. We prioritize expandability and continue to develop using a behavior-motion configuration. (This [previously discussed document](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/main/docs/design/software_architecture/Planning/DesignRationale.md) may be useful.) ## Component interface @@ -106,11 +144,15 @@ This section describes the inputs and outputs of the Planning Component and of i - **Validation to Control Component** - Trajectory: Same as above but with some additional safety considerations. -## How to add new modules (WIP) +## How to add new features (WIP) As mentioned in the goal session, this planning module is designed to be extensible by third-party components. For specific instructions on how to add new modules and expand its functionality, please refer to the provided documentation or guidelines (WIP). -## Supported Functions + + +## Detailed information + +### Supported features | Feature | Description | Requirements | Figure | | -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | @@ -154,7 +196,7 @@ As mentioned in the goal session, this planning module is designed to be extensi <!--  --> -## Reference Implementation +### Reference Implementation The following diagram describes the reference implementation of the Planning component. By adding new modules or extending the functionalities, various ODDs can be supported. From 94eabed72404c2a350bad65c49b92a2a344da188 Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Mon, 19 Jun 2023 18:22:47 +0900 Subject: [PATCH 03/19] pre-commit Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- .../autoware-architecture/planning/index.md | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/docs/design/autoware-architecture/planning/index.md b/docs/design/autoware-architecture/planning/index.md index ef56be959d6..e1672f2a989 100644 --- a/docs/design/autoware-architecture/planning/index.md +++ b/docs/design/autoware-architecture/planning/index.md @@ -1,18 +1,15 @@ # Planning component design - ## Purpose of this document <!-- この文書は、Planning Componentの開発における目標やハイレベルな設計戦略、およびそれに関連する意思決定とその理由を説明します。このドキュメントを通じて、すべてのOSS開発者は、Planning Componentがどのような設計思想や制約のもとで設計され、どのような目標を達成するために開発が行われているのかを理解することができます。これにより、円滑な開発参加が可能となります。 さらに、(これらの情報は将来的に分離して管理されるかもしれませんが、)具体的なリファレンス実装や提供される機能の一覧も後半に記載されています。これにより、開発者やユーザーは、Planning Componentを使用することで現在何が可能なのか、機能をどのように活用したり、拡張したり、追加したりすることができるのかを理解することができます。 --> - This document outlines the goals, high-level design strategies, and related rationales in the development of the Planning Component. Through this document, all OSS developers will be able to comprehend the design philosophy and constraints under which the Planning Component is designed, and the goals driving its development. This will enable them to participate seamlessly in the development. Furthermore, a list of concrete reference implementations and provided features is also included in the latter part of this document, while this information might be managed separately in the future. This allows developers and users to understand what is currently possible with the Planning Component, how to utilize, expand, or add to its features. - ## Overview The Planning component generates the trajectory message that will be subscribed to by the Control component based on the environmental state obtained from the Localization and the Perception components. This component design follows the overarching philosophy of Autoware, defined as the [microautonomy concept](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts/). @@ -38,7 +35,6 @@ The purpose of the planning module in our Autoware system is not to solve every **Non-goals:** - The following points are listed as non-goals, intended to clarify our design concepts. However, it's important to note that while we do not demand a "never crash" capability as listed below, our architecture should still be designed in a manner that could accommodate the needs to achieve a "never crash" state through third-party extensions or future enhancements. - The Planning component is not self-contained but can be extended and enhanced with third parties. @@ -46,8 +42,7 @@ The following points are listed as non-goals, intended to clarify our design con - The Planning component is not designed to always outperform human drivers. - The Planning component is not capable of “never crashes”. - While "never crashes" is not a present goals, we need to create an architecture that can potentially achieve such a state with third-party components or decision of human operators or future enhancement. - +While "never crashes" is not a present goals, we need to create an architecture that can potentially achieve such a state with third-party components or decision of human operators or future enhancement. ## Requirements @@ -56,6 +51,7 @@ The following points are listed as non-goals, intended to clarify our design con ## Assumptions Assumptiosがあった方が良いらしいが、例えばどんなことだろう? + ## High level design This diagram describes the high-level architecture of the Planning Component. @@ -74,7 +70,6 @@ The Planning component consists of the following sub-components: Following the microautonomy architecture, we adopt a modular system framework where the tasks are implemented as modules that can be dynamically loaded and unloaded to achieve different features depending on the given use cases. For instance, the Behavior Planning component includes modules such as lane change, intersection, and crosswalk modules. - <!-- **Rationale** Planningと各Componentの分離について。planningとperceptionやcontrol componentを分離して開発することにより、third-party のperception component などとの連携は非常に簡単に実行できる(利用するコンポーネントを切り替えるだけである)。しかし、ここには性能と拡張性のトレードオフが存在する。例えば、perception componentは本来planning componentが必要とする物体に対してのみ認識と移動予測を行えば十分であるが、componentを分離するとこのような密なコミュニケーションを行うことができない。また、計画と制御の分離によって、車両運動性能を適切に考慮した上で計画を行うことが難しくなる。これを補うためには、interfaceでやり取りをする情報を増やす必要があったり、計算量を増やす必要が出てくる。 @@ -84,10 +79,8 @@ Scenario Planningレイヤーの導入について。レーン構造が整備さ **Rationale** BehaviorとMotionの分離について。Planning全体を振る舞いを決定する「Behavior」と、最終的な運動動作を決定する「Motion」に分離することは王道のアプローチである。ただしこれは性能とのトレードオフであり、機能を分離するほど性能が劣化する。例えば、Behaviorは最終的にMotionがどのような計算をするかを知る前に判断を行わなければならず、一般的に保守的な判断を行うことになる。一方で、behaviorとmotionを結合したシステムでは判断と乗り心地といった概念が結合しており、機能の拡張性の面で課題が残る。我々は拡張性を重要視し、behavior-motionの構成で開発を進めている。(昔に議論された[こちらの資料](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/main/docs/design/software_architecture/Planning/DesignRationale.md)も役に立つ。) --> - **Rationale for the separation of planning and other components** - By developing the planning, perception, localzition, and control components separately, it becomes easy to collaborate with third-party components in the component level. However, there's a trade-off between performance and extensibility here. For instance, a perception component would ideally perform recognition and motion prediction only for the objects that the planning component needs, but separating the components hinders such close communication. Additionally, separating planning and control makes it harder to consider vehicle motion performance when planning. To compensate for this, it's necessary to either increase the information exchanged via the interface or increase the computation load. - +By developing the planning, perception, localzition, and control components separately, it becomes easy to collaborate with third-party components in the component level. However, there's a trade-off between performance and extensibility here. For instance, a perception component would ideally perform recognition and motion prediction only for the objects that the planning component needs, but separating the components hinders such close communication. Additionally, separating planning and control makes it harder to consider vehicle motion performance when planning. To compensate for this, it's necessary to either increase the information exchanged via the interface or increase the computation load. **Rationale for introducing the Scenario Planning layer** The definition of the interface and the level of available information vary between driving in an area with well-structured lanes and driving in a free-space area like a parking lot. For example, while Lane Driving can handle routes with map IDs, this is not appropriate for planning in free space. To flexibly handle future scenarios that might require different interfaces, we have introduced a mechanism that switches planning components at the scenario level. However, a remaining issue is the inability to reuse modules across different scenarios. @@ -148,8 +141,6 @@ This section describes the inputs and outputs of the Planning Component and of i As mentioned in the goal session, this planning module is designed to be extensible by third-party components. For specific instructions on how to add new modules and expand its functionality, please refer to the provided documentation or guidelines (WIP). - - ## Detailed information ### Supported features From 6cc498e4f3a5dc42c41ff6b2de7470cc755c0001 Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Mon, 19 Jun 2023 22:31:27 +0900 Subject: [PATCH 04/19] tmp Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- .../autoware-architecture/planning/index.md | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/docs/design/autoware-architecture/planning/index.md b/docs/design/autoware-architecture/planning/index.md index e1672f2a989..a8cf7ee202d 100644 --- a/docs/design/autoware-architecture/planning/index.md +++ b/docs/design/autoware-architecture/planning/index.md @@ -6,23 +6,19 @@ さらに、(これらの情報は将来的に分離して管理されるかもしれませんが、)具体的なリファレンス実装や提供される機能の一覧も後半に記載されています。これにより、開発者やユーザーは、Planning Componentを使用することで現在何が可能なのか、機能をどのように活用したり、拡張したり、追加したりすることができるのかを理解することができます。 --> -This document outlines the goals, high-level design strategies, and related rationales in the development of the Planning Component. Through this document, all OSS developers will be able to comprehend the design philosophy and constraints under which the Planning Component is designed, and the goals driving its development. This will enable them to participate seamlessly in the development. +This document outlines the goals, high-level design strategies, and related rationales in the development of the Planning Component. Through this document, all OSS developers will be able to comprehend the design philosophy, goals and constraints under which the Planning Component is designed. This will enable them to participate seamlessly in the development. Furthermore, a list of concrete reference implementations and provided features is also included in the latter part of this document, while this information might be managed separately in the future. This allows developers and users to understand what is currently possible with the Planning Component, how to utilize, expand, or add to its features. -## Overview - -The Planning component generates the trajectory message that will be subscribed to by the Control component based on the environmental state obtained from the Localization and the Perception components. This component design follows the overarching philosophy of Autoware, defined as the [microautonomy concept](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts/). - ## Goals and non-goals -The goal of the Planning component is to generate a trajectory (path and velocity) of the self-driving vehicle that is safe and well-regulated while satisfying the given mission. +The role of the Planning component is to generate a trajectory (path and velocity) of the self-driving vehicle that is safe and well-regulated while satisfying the given mission. <!-- 全体の設計においては、microautonomyのコンセプトに従い、適切なモジュール化と明確なインターフェース定義、およびそれにって得られる高い拡張性を重要視します。すなわち、Autowareにおけるplanningモジュールの目的は、世の中すべての複雑なUseCaseを達成することではなく(もちろん基本的なUseCaseが達成できるレベルのソフトはベースとして提供されるべきですが)、ユーザーの要求レベルに合わせて適切にカスタマイズできる(更には必要な機能が適切に追加開発できる)platformを提供することです。 --> -In our overall design, we emphasize the concept of "microautonomy". This term refers to a design approach that focuses on the proper modularization of functions, clear definition of interfaces between these modules, and as a result, high expandability of the system. +In our overall design, we emphasize the concept of "[microautonomy](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts)". This term refers to a design approach that focuses on the proper modularization of functions, clear definition of interfaces between these modules, and as a result, high expandability of the system. -The purpose of the planning module in our Autoware system is not to solve every conceivable complex use case (although we do aim to support basic ones), but rather to provide a platform that can be customized to the user's needs and can facilitate the development of additional features. +The goal of the Planning component is not to solve every conceivable complex use case (although we do aim to support basic ones), but rather to provide a platform that can be customized to the user's needs and can facilitate the development of additional features. **Goals:** @@ -35,7 +31,7 @@ The purpose of the planning module in our Autoware system is not to solve every **Non-goals:** -The following points are listed as non-goals, intended to clarify our design concepts. However, it's important to note that while we do not demand a "never crash" capability as listed below, our architecture should still be designed in a manner that could accommodate the needs to achieve a "never crash" state through third-party extensions or future enhancements. +To clarify our design concepts, the following points are listed as non-goals. - The Planning component is not self-contained but can be extended and enhanced with third parties. - The Planning component is not aimed at the complete functionality and capability. @@ -79,14 +75,27 @@ Scenario Planningレイヤーの導入について。レーン構造が整備さ **Rationale** BehaviorとMotionの分離について。Planning全体を振る舞いを決定する「Behavior」と、最終的な運動動作を決定する「Motion」に分離することは王道のアプローチである。ただしこれは性能とのトレードオフであり、機能を分離するほど性能が劣化する。例えば、Behaviorは最終的にMotionがどのような計算をするかを知る前に判断を行わなければならず、一般的に保守的な判断を行うことになる。一方で、behaviorとmotionを結合したシステムでは判断と乗り心地といった概念が結合しており、機能の拡張性の面で課題が残る。我々は拡張性を重要視し、behavior-motionの構成で開発を進めている。(昔に議論された[こちらの資料](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/main/docs/design/software_architecture/Planning/DesignRationale.md)も役に立つ。) --> +### Discussions + +The following provides discussion points on trade-offs in the architecture. From this information, you will understand the current design philosophy of the Planning Component, its challenges, and potential improvement. + **Rationale for the separation of planning and other components** By developing the planning, perception, localzition, and control components separately, it becomes easy to collaborate with third-party components in the component level. However, there's a trade-off between performance and extensibility here. For instance, a perception component would ideally perform recognition and motion prediction only for the objects that the planning component needs, but separating the components hinders such close communication. Additionally, separating planning and control makes it harder to consider vehicle motion performance when planning. To compensate for this, it's necessary to either increase the information exchanged via the interface or increase the computation load. **Rationale for introducing the Scenario Planning layer** -The definition of the interface and the level of available information vary between driving in an area with well-structured lanes and driving in a free-space area like a parking lot. For example, while Lane Driving can handle routes with map IDs, this is not appropriate for planning in free space. To flexibly handle future scenarios that might require different interfaces, we have introduced a mechanism that switches planning components at the scenario level. However, a remaining issue is the inability to reuse modules across different scenarios. +There are different requirements for interfaces between driving in well-structured lanes and driving in a free-space area like a parking lot. For example, while Lane Driving can handle routes with map IDs, this is not appropriate for planning in free space. The mechanism that switches planning sub-components at the scenario level (Lane Driving, Parking, etc) enables a flexible design of the interface, however, it has a drawbacks of the reuse of modules across different scenarios. + **Rationale for the separation of Behavior and Motion** -The classic approach to Planning involves dividing it into 'Behavior', which decides the action, and 'Motion', which determines the final movement. However, this separation implies a trade-off with performance, as performance tends to degrade with increasing separation of functions. For example, Behavior needs to make decisions without prior knowledge of the computations that Motion will eventually perform, which generally results in conservative decision-making. On the other hand, if behavior and motion are integrated, motion performance and decision-making become interdependent, creating challenges in terms of expandability, such as when you wish to extend only the decision-making function to follow a regional traffic rules. We prioritize expandability and continue to develop using a behavior-motion configuration. (This [previously discussed document](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/main/docs/design/software_architecture/Planning/DesignRationale.md) may be useful.) +The classic approach to Planning involves dividing it into "Behavior", which decides the action, and "Motion", which determines the final movement. However, this separation implies a trade-off with performance, as performance tends to degrade with increasing separation of functions. For example, Behavior needs to make decisions without prior knowledge of the computations that Motion will eventually perform, which generally results in conservative decision-making. On the other hand, if behavior and motion are integrated, motion performance and decision-making become interdependent, creating challenges in terms of expandability, such as when you wish to extend only the decision-making function to follow a regional traffic rules. + +To understand this background. this [previously discussed document](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/main/docs/design/software_architecture/Planning/DesignRationale.md) may be useful. + + +### Policies + +Autowareは拡張性の高いデザインを + ## Component interface From 47f672f48a7e644d283f3302c582e68c5d850294 Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Mon, 19 Jun 2023 22:56:36 +0900 Subject: [PATCH 05/19] update Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- .../autoware-architecture/planning/index.md | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/docs/design/autoware-architecture/planning/index.md b/docs/design/autoware-architecture/planning/index.md index a8cf7ee202d..e5bee0eb570 100644 --- a/docs/design/autoware-architecture/planning/index.md +++ b/docs/design/autoware-architecture/planning/index.md @@ -94,7 +94,30 @@ To understand this background. this [previously discussed document](https://gith ### Policies -Autowareは拡張性の高いデザインを +様々なニーズやODDへの適応は、異なるpolicyという形で表現することができます。例えば、自動走行レベルにおいて、Planningは以下のpolicyを提供します。 + +- **Fully-autonomous** that delegates all decision makings to the system, thus the system is responsible for the safety. +- **Semi-autonomous** that delegates most of decision makings to the system but the rest of decision makings strictly defined remain with the human operator, thus both the system and the human operator are responsible for the safety. +- **Motion-autonomous** that delegates only the low-level motion plan to the system, while high-level mission and behavior plannings remain with the human operator, thus the human operator is responsible for the safety. + +このpolicyは求められているユースケースやODDによって変わります。走行前に決定されているかもしれないし、走行中に動的に切り替わる可能性もあります。ここで、必ずしもFully-autonomousのみが最終目標ではないことに注意してください。期待するODDやセンサー構成、センサーコストによっては、Semi-autonomousの前提でシステムを作成することもあります。我々のゴールは、これらのポリシーが柔軟に変更可能であるアーキテクチャを設計することです。 + +TODO: このautonomous levelのポリシー変更は設計方針が決まっていないので要議論。HMIとの連携でこれらの実現は可能かと思われるが、厳密に検討されていない。 + + +<!-- 以下、planning design docから --> + +<!-- It is extremely important to separate the mechanism and policy, allowing us to modularize the Behavior Planning component and the Motion Planning component not only from the software point of view but also from the actual logic point of view. A bad example of logic is based on such a design that takes the minimum of the velocity levels that are calculated by the modules of the Behavior Planning component and the Motion Planning component. You cannot compare these velocity levels in the same logic, because the behavior is derived by data observed in the environment, while the motion is determined by mathematical formulas. The right design is that we make one policy that uses the velocity level calculated by the Behavior Planning component and another policy that uses the velocity level calculated by the Motion Planning component, and develop the mechanism in which one of the policies can be selected by another logic (this could be a human operator to begin with) depending on the use cases. More specifically, we must develop the mechanism in which the modules to be activated can be changed by selecting the policy. Who to select the policy is undefined in design, though it should be eventually the system but can be the human operator at the beginning. The functionality and capability that fail to work out when the policy is selected by the human operator will not work out anyway even when the policy is selected by the system autonomously. + +In the literature, the system framework often falls into a hierarchical framework and a parallel framework. The hierarchical framework classifies the tasks into multiple stages, and they are executed in the order of stages constructed hierarchically. The parallel framework, on the other hand, does not construct a hierarchy of the tasks but allows the features to have their own mechanism. Examples of these frameworks are depicted below. + +J. Wei, J. M. Snider, T. Gu, J. M. Dolan and B. Litkouhi, "A behavioral planning framework for autonomous driving," 2014 IEEE Intelligent Vehicles Symposium Proceedings, 2014, pp. 458-464, doi: 10.1109/IVS.2014.6856582. + +Our planning components are built based on the microautonomy architecture with Autoware. We adopt a modular system framework where the tasks are implemented as modules that can be dynamically loaded and unloaded to achieve different features depending on the given use cases, like the parallel framework, and the modules belong to the components constructed hierarchically, like the hierarchical framework. This way, we benefit from the advantages of the two frameworks. --> + + + + ## Component interface From c2f1d5573374a1bde8932948e20ccbe8681ad49f Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Tue, 20 Jun 2023 10:21:20 +0900 Subject: [PATCH 06/19] update Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- .../design/autoware-architecture/planning/index.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/design/autoware-architecture/planning/index.md b/docs/design/autoware-architecture/planning/index.md index e5bee0eb570..d2286982393 100644 --- a/docs/design/autoware-architecture/planning/index.md +++ b/docs/design/autoware-architecture/planning/index.md @@ -77,34 +77,36 @@ BehaviorとMotionの分離について。Planning全体を振る舞いを決定 ### Discussions -The following provides discussion points on trade-offs in the architecture. From this information, you will understand the current design philosophy of the Planning Component, its challenges, and potential improvement. +The following provides discussion points on trade-offs in the architecture. From this information, you can see the current design limitation, challenges, and potential improvement. **Rationale for the separation of planning and other components** -By developing the planning, perception, localzition, and control components separately, it becomes easy to collaborate with third-party components in the component level. However, there's a trade-off between performance and extensibility here. For instance, a perception component would ideally perform recognition and motion prediction only for the objects that the planning component needs, but separating the components hinders such close communication. Additionally, separating planning and control makes it harder to consider vehicle motion performance when planning. To compensate for this, it's necessary to either increase the information exchanged via the interface or increase the computation load. +By developing the planning, perception, localization, and control components separately, it becomes easy to collaborate with third-party components in the component level. However, there's a trade-off between performance and extensibility here. For instance, a perception component would ideally perform recognition and motion prediction only for the objects that the planning component needs, but separating the components hinders such close communication. Additionally, separating planning and control makes it harder to consider vehicle motion performance when planning. To compensate for this, it's necessary to either increase the information exchanged via the interface or increase the computation load. **Rationale for introducing the Scenario Planning layer** There are different requirements for interfaces between driving in well-structured lanes and driving in a free-space area like a parking lot. For example, while Lane Driving can handle routes with map IDs, this is not appropriate for planning in free space. The mechanism that switches planning sub-components at the scenario level (Lane Driving, Parking, etc) enables a flexible design of the interface, however, it has a drawbacks of the reuse of modules across different scenarios. **Rationale for the separation of Behavior and Motion** -The classic approach to Planning involves dividing it into "Behavior", which decides the action, and "Motion", which determines the final movement. However, this separation implies a trade-off with performance, as performance tends to degrade with increasing separation of functions. For example, Behavior needs to make decisions without prior knowledge of the computations that Motion will eventually perform, which generally results in conservative decision-making. On the other hand, if behavior and motion are integrated, motion performance and decision-making become interdependent, creating challenges in terms of expandability, such as when you wish to extend only the decision-making function to follow a regional traffic rules. +One of the classic approach to Planning involves dividing it into "Behavior", which decides the action, and "Motion", which determines the final movement. However, this separation implies a trade-off with performance, as performance tends to degrade with increasing separation of functions. For example, Behavior needs to make decisions without prior knowledge of the computations that Motion will eventually perform, which generally results in conservative decision-making. On the other hand, if behavior and motion are integrated, motion performance and decision-making become interdependent, creating challenges in terms of expandability, such as when you wish to extend only the decision-making function to follow a regional traffic rules. To understand this background. this [previously discussed document](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/main/docs/design/software_architecture/Planning/DesignRationale.md) may be useful. -### Policies +### Mechanism and policy -様々なニーズやODDへの適応は、異なるpolicyという形で表現することができます。例えば、自動走行レベルにおいて、Planningは以下のpolicyを提供します。 +Planningにおいて、様々なニーズやODDへの適応するために、いくつかのポリシーを定義します。例えば、自動走行レベルにおいて、Planningは以下のpolicyを提供します。 - **Fully-autonomous** that delegates all decision makings to the system, thus the system is responsible for the safety. - **Semi-autonomous** that delegates most of decision makings to the system but the rest of decision makings strictly defined remain with the human operator, thus both the system and the human operator are responsible for the safety. - **Motion-autonomous** that delegates only the low-level motion plan to the system, while high-level mission and behavior plannings remain with the human operator, thus the human operator is responsible for the safety. -このpolicyは求められているユースケースやODDによって変わります。走行前に決定されているかもしれないし、走行中に動的に切り替わる可能性もあります。ここで、必ずしもFully-autonomousのみが最終目標ではないことに注意してください。期待するODDやセンサー構成、センサーコストによっては、Semi-autonomousの前提でシステムを作成することもあります。我々のゴールは、これらのポリシーが柔軟に変更可能であるアーキテクチャを設計することです。 +このpolicyは求められているユースケースやODDによって変わります。走行前に決定されているかもしれないし、走行中に動的に切り替わる可能性もあります。ここで、必ずしもFully-autonomousのみがゴールではないことに注意してください。期待するODDやセンサー構成、センサーコストによっては、Semi-autonomousの前提でシステムを作成することもあります。我々のゴールは、これらのポリシーが柔軟に変更可能であるアーキテクチャを設計することです。 TODO: このautonomous levelのポリシー変更は設計方針が決まっていないので要議論。HMIとの連携でこれらの実現は可能かと思われるが、厳密に検討されていない。 +It is extremely important to separate the mechanism and policy, allowing us to modularize the planning components not only from the software point of view but also from the actual logic point of view. In the literature, the planning system framework often falls into a hierarchical framework and a parallel framework. The hierarchical framework classifies the tasks into multiple stages, and they are executed in the order of stages constructed hierarchically. The parallel framework, on the other hand, does not construct a hierarchy of the tasks but allows the features to have their own mechanism. Examples of these frameworks are depicted below. + <!-- 以下、planning design docから --> <!-- It is extremely important to separate the mechanism and policy, allowing us to modularize the Behavior Planning component and the Motion Planning component not only from the software point of view but also from the actual logic point of view. A bad example of logic is based on such a design that takes the minimum of the velocity levels that are calculated by the modules of the Behavior Planning component and the Motion Planning component. You cannot compare these velocity levels in the same logic, because the behavior is derived by data observed in the environment, while the motion is determined by mathematical formulas. The right design is that we make one policy that uses the velocity level calculated by the Behavior Planning component and another policy that uses the velocity level calculated by the Motion Planning component, and develop the mechanism in which one of the policies can be selected by another logic (this could be a human operator to begin with) depending on the use cases. More specifically, we must develop the mechanism in which the modules to be activated can be changed by selecting the policy. Who to select the policy is undefined in design, though it should be eventually the system but can be the human operator at the beginning. The functionality and capability that fail to work out when the policy is selected by the human operator will not work out anyway even when the policy is selected by the system autonomously. From 09d2c69b64fafc47e2d00098964d37f0fc14dcfc Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Tue, 20 Jun 2023 21:03:10 +0900 Subject: [PATCH 07/19] update Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- .../image/how-to-add-new-modules.drawio.svg | 1403 +++++++++++++++++ .../autoware-architecture/planning/index.md | 69 +- .../planning/planning-system-literature.png | Bin 0 -> 82598 bytes 3 files changed, 1421 insertions(+), 51 deletions(-) create mode 100644 docs/design/autoware-architecture/planning/image/how-to-add-new-modules.drawio.svg create mode 100644 docs/design/autoware-architecture/planning/planning-system-literature.png diff --git a/docs/design/autoware-architecture/planning/image/how-to-add-new-modules.drawio.svg b/docs/design/autoware-architecture/planning/image/how-to-add-new-modules.drawio.svg new file mode 100644 index 00000000000..ca3f9ab856c --- /dev/null +++ b/docs/design/autoware-architecture/planning/image/how-to-add-new-modules.drawio.svg @@ -0,0 +1,1403 @@ +<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="3362px" height="950px" viewBox="-0.5 -0.5 3362 950" content="<mxfile><diagram id="8qt1-HtFgWOiWtJ-FPd8" name="planning (v0.13.0)">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</diagram></mxfile>"> + <defs/> + <g> + <path d="M 80 246.76 L 145.76 246.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 157.76 246.78 L 145.76 252.77 L 145.77 240.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="0" y="581" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 646px; margin-left: 1px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="text-align: left"> + Localization + </div> + <div style="text-align: left"> + Component + </div> + </div> + </div> + </div> + </foreignObject> + <text x="40" y="650" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Localization... + </text> + </switch> + </g> + <rect x="0" y="435" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 500px; margin-left: 1px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Perception + <br/> + Component + </div> + </div> + </div> + </foreignObject> + <text x="40" y="504" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Perception... + </text> + </switch> + </g> + <path d="M 94.56 330.11 L 160 329.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 82.56 330.15 L 94.53 324.11 L 94.58 336.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="0" y="290" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 355px; margin-left: 1px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Human + <br/> + Machine + <br/> + Interface + </div> + </div> + </div> + </foreignObject> + <text x="40" y="359" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Human... + </text> + </switch> + </g> + <rect x="160" y="115" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 140px; margin-left: 161px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + API Layer + </div> + </div> + </div> + </foreignObject> + <text x="545" y="144" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + API Layer + </text> + </switch> + </g> + <path d="M 737.5 217.05 L 737.5 179.24" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 737.5 167.24 L 743.5 179.24 L 731.5 179.24 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="160" y="217.05" width="770" height="637.95" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 536px; margin-left: 161px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b style="font-size: 15px;"> + Third-party Planning Component + </b> + </div> + </div> + </div> + </foreignObject> + <text x="545" y="541" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="15px" text-anchor="middle"> + Third-party Planning Component + </text> + </switch> + </g> + <path d="M 545 855 L 545 884.81" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 545 896.81 L 539 884.81 L 551 884.81 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="160" y="899.05" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 924px; margin-left: 161px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Control Component + </div> + </div> + </div> + </foreignObject> + <text x="545" y="928" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Control Component + </text> + </switch> + </g> + <path d="M 545 169 L 545 200.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 545 212.76 L 539 200.76 L 551 200.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="0" y="725" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 790px; margin-left: 1px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style=""> + System + </div> + <div style=""> + Component + </div> + </div> + </div> + </div> + </foreignObject> + <text x="40" y="794" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + System... + </text> + </switch> + </g> + <path d="M 300 165 L 300 200.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 300 212.76 L 294 200.76 L 306 200.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="0" y="217.05" width="80" height="60" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 247px; margin-left: 1px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Map + <br/> + Component + </div> + </div> + </div> + </foreignObject> + <text x="40" y="251" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Map... + </text> + </switch> + </g> + <path d="M 80 381.76 L 145.76 381.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 157.76 381.78 L 145.76 387.77 L 145.77 375.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 80 501.76 L 145.76 501.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 157.76 501.78 L 145.76 507.77 L 145.77 495.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 80 646.76 L 145.76 646.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 157.76 646.78 L 145.76 652.77 L 145.77 640.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 94.56 790.11 L 160 789.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 82.56 790.15 L 94.53 784.11 L 94.58 796.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 1290 246.76 L 1355.76 246.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1367.76 246.78 L 1355.76 252.77 L 1355.77 240.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="1210" y="581" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 646px; margin-left: 1211px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="text-align: left"> + Localization + </div> + <div style="text-align: left"> + Component + </div> + </div> + </div> + </div> + </foreignObject> + <text x="1250" y="650" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Localization... + </text> + </switch> + </g> + <rect x="1210" y="435" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 500px; margin-left: 1211px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Perception + <br/> + Component + </div> + </div> + </div> + </foreignObject> + <text x="1250" y="504" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Perception... + </text> + </switch> + </g> + <path d="M 1304.56 330.11 L 1370 329.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1292.56 330.15 L 1304.53 324.11 L 1304.58 336.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="1210" y="290" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 355px; margin-left: 1211px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Human + <br/> + Machine + <br/> + Interface + </div> + </div> + </div> + </foreignObject> + <text x="1250" y="359" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Human... + </text> + </switch> + </g> + <rect x="1370" y="115" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 140px; margin-left: 1371px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + API Layer + </div> + </div> + </div> + </foreignObject> + <text x="1755" y="144" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + API Layer + </text> + </switch> + </g> + <path d="M 1947.5 217.05 L 1947.5 179.24" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1947.5 167.24 L 1953.5 179.24 L 1941.5 179.24 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="1370" y="217.05" width="770" height="637.95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <path d="M 1755 325 Q 1755 325 1755 340.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1755 352.76 L 1749 340.76 L 1761 340.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="1430" y="269" width="650" height="56" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 297px; margin-left: 1431px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b> + Mission Planning + </b> + </div> + </div> + </div> + </foreignObject> + <text x="1755" y="301" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Mission Planning + </text> + </switch> + </g> + <rect x="1430" y="355" width="650" height="390" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 362px; margin-left: 1431px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b> + <br/> + Scenario Planning + </b> + </div> + </div> + </div> + </foreignObject> + <text x="1755" y="374" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Scenario Planning + </text> + </switch> + </g> + <rect x="1465" y="415" width="395" height="290" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 393px; height: 1px; padding-top: 422px; margin-left: 1466px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b> + <br/> + Lane Driving Scenario + </b> + </div> + </div> + </div> + </foreignObject> + <text x="1663" y="434" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Lane Driving Scenario + </text> + </switch> + </g> + <path d="M 1977.5 705 L 1977.5 725 L 1818 725 L 1755 725 L 1755 760.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1755 772.76 L 1749 760.76 L 1761 760.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="1910" y="415" width="135" height="290" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 133px; height: 1px; padding-top: 560px; margin-left: 1911px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b style="border-color: var(--border-color);"> + Third-party Planning Component + </b> + </div> + </div> + </div> + </foreignObject> + <text x="1978" y="564" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Third-party Planning C... + </text> + </switch> + </g> + <path d="M 1662.5 560 Q 1662.5 560 1662.5 576.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1662.5 588.76 L 1656.5 576.76 L 1668.5 576.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="1485" y="465" width="355" height="95" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 353px; height: 1px; padding-top: 513px; margin-left: 1486px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b style="border-color: var(--border-color);"> + Third-party Planning Component + </b> + </div> + </div> + </div> + </foreignObject> + <text x="1663" y="516" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Third-party Planning Component + </text> + </switch> + </g> + <path d="M 1662.5 686 L 1662.5 725 L 1755 725 L 1755 760.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1755 772.76 L 1749 760.76 L 1761 760.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="1485" y="591" width="355" height="95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 353px; height: 1px; padding-top: 598px; margin-left: 1486px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b> + Motion Planning + </b> + </div> + </div> + </div> + </foreignObject> + <text x="1663" y="610" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Motion Planning + </text> + </switch> + </g> + <path d="M 1755 831 L 1755 884.81" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1755 896.81 L 1749 884.81 L 1761 884.81 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="1430" y="775" width="650" height="56" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 803px; margin-left: 1431px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b> + Validation + </b> + </div> + </div> + </div> + </foreignObject> + <text x="1755" y="807" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Validation + </text> + </switch> + </g> + <rect x="1370" y="899.05" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 924px; margin-left: 1371px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Control Component + </div> + </div> + </div> + </foreignObject> + <text x="1755" y="928" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Control Component + </text> + </switch> + </g> + <rect x="1390" y="230" width="140" height="30" fill="none" stroke="none" pointer-events="all" transform="translate(2,3)" opacity="0.25"/> + <rect x="1390" y="230" width="140" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 245px; margin-left: 1460px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"> + <b> + Planning Component + </b> + </div> + </div> + </div> + </foreignObject> + <text x="1460" y="249" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Planning Component + </text> + </switch> + </g> + <path d="M 1755 169 L 1755 254.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1755 266.76 L 1749 254.76 L 1761 254.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="1210" y="725" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 790px; margin-left: 1211px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style=""> + System + </div> + <div style=""> + Component + </div> + </div> + </div> + </div> + </foreignObject> + <text x="1250" y="794" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + System... + </text> + </switch> + </g> + <path d="M 1510 165 L 1510 200.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1510 212.76 L 1504 200.76 L 1516 200.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="1210" y="217.05" width="80" height="60" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 247px; margin-left: 1211px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Map + <br/> + Component + </div> + </div> + </div> + </foreignObject> + <text x="1250" y="251" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Map... + </text> + </switch> + </g> + <rect x="1503" y="628.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 638px; margin-left: 1504px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Path Smooth + </div> + </div> + </div> + </div> + </foreignObject> + <text x="1547" y="641" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Path Smooth + </text> + </switch> + </g> + <rect x="1618" y="628.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 638px; margin-left: 1619px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Velocity Smooth + </div> + </div> + </div> + </div> + </foreignObject> + <text x="1662" y="641" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Velocity Smooth + </text> + </switch> + </g> + <rect x="1503" y="659.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 669px; margin-left: 1504px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Collision Check + </div> + </div> + </div> + </div> + </foreignObject> + <text x="1547" y="672" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Collision Check + </text> + </switch> + </g> + <rect x="1730" y="659.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 669px; margin-left: 1731px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style=""> + etc... + </div> + </div> + </div> + </div> + </foreignObject> + <text x="1775" y="672" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + etc... + </text> + </switch> + </g> + <path d="M 1290 381.76 L 1355.76 381.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1367.76 381.78 L 1355.76 387.77 L 1355.77 375.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 1290 501.76 L 1355.76 501.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1367.76 501.78 L 1355.76 507.77 L 1355.77 495.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 1290 646.76 L 1355.76 646.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1367.76 646.78 L 1355.76 652.77 L 1355.77 640.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 1304.56 790.11 L 1370 789.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1292.56 790.15 L 1304.53 784.11 L 1304.58 796.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="1882" y="290" width="122" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 120px; height: 1px; padding-top: 299px; margin-left: 1883px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Route Planning + </div> + </div> + </div> + </div> + </foreignObject> + <text x="1943" y="303" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Route Planning + </text> + </switch> + </g> + <rect x="1730" y="628.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 638px; margin-left: 1731px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Drivable Area + </div> + </div> + </div> + </div> + </foreignObject> + <text x="1775" y="641" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Drivable Area + </text> + </switch> + </g> + <rect x="1618" y="659.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 669px; margin-left: 1619px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Slow Down + </div> + </div> + </div> + </div> + </foreignObject> + <text x="1662" y="672" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Slow Down + </text> + </switch> + </g> + <rect x="1843" y="793.51" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 803px; margin-left: 1844px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + TTC Check + </div> + </div> + </div> + </div> + </foreignObject> + <text x="1887" y="806" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + TTC Check + </text> + </switch> + </g> + <rect x="1953" y="793.51" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 803px; margin-left: 1954px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + ACC Check + </div> + </div> + </div> + </div> + </foreignObject> + <text x="1997" y="806" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + ACC Check + </text> + </switch> + </g> + <path d="M 2510 246.76 L 2575.76 246.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 2587.76 246.78 L 2575.76 252.77 L 2575.77 240.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="2430" y="581" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 646px; margin-left: 2431px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="text-align: left"> + Localization + </div> + <div style="text-align: left"> + Component + </div> + </div> + </div> + </div> + </foreignObject> + <text x="2470" y="650" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Localization... + </text> + </switch> + </g> + <rect x="2430" y="435" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 500px; margin-left: 2431px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Perception + <br/> + Component + </div> + </div> + </div> + </foreignObject> + <text x="2470" y="504" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Perception... + </text> + </switch> + </g> + <path d="M 2524.56 330.11 L 2590 329.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 2512.56 330.15 L 2524.53 324.11 L 2524.58 336.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="2430" y="290" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 355px; margin-left: 2431px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Human + <br/> + Machine + <br/> + Interface + </div> + </div> + </div> + </foreignObject> + <text x="2470" y="359" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Human... + </text> + </switch> + </g> + <rect x="2590" y="115" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 140px; margin-left: 2591px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + API Layer + </div> + </div> + </div> + </foreignObject> + <text x="2975" y="144" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + API Layer + </text> + </switch> + </g> + <path d="M 3167.5 217.05 L 3167.5 179.24" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 3167.5 167.24 L 3173.5 179.24 L 3161.5 179.24 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="2590" y="217.05" width="770" height="637.95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <path d="M 2975 325 Q 2975 325 2975 340.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 2975 352.76 L 2969 340.76 L 2981 340.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="2650" y="269" width="650" height="56" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 297px; margin-left: 2651px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b> + Mission Planning + </b> + </div> + </div> + </div> + </foreignObject> + <text x="2975" y="301" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Mission Planning + </text> + </switch> + </g> + <rect x="2650" y="355" width="650" height="390" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 362px; margin-left: 2651px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b> + <br/> + Scenario Planning + </b> + </div> + </div> + </div> + </foreignObject> + <text x="2975" y="374" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Scenario Planning + </text> + </switch> + </g> + <rect x="2685" y="415" width="395" height="290" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 393px; height: 1px; padding-top: 422px; margin-left: 2686px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b> + <br/> + Lane Driving Scenario + </b> + </div> + </div> + </div> + </foreignObject> + <text x="2883" y="434" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Lane Driving Scenario + </text> + </switch> + </g> + <path d="M 3197.5 705 L 3197.5 725 L 3038 725 L 2975 725 L 2975 760.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 2975 772.76 L 2969 760.76 L 2981 760.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="3130" y="415" width="135" height="290" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 133px; height: 1px; padding-top: 422px; margin-left: 3131px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b> + <br/> + Parking Scenario + </b> + </div> + </div> + </div> + </foreignObject> + <text x="3198" y="434" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Parking Scenario + </text> + </switch> + </g> + <path d="M 2882.5 560 Q 2882.5 560 2882.5 576.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 2882.5 588.76 L 2876.5 576.76 L 2888.5 576.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="2705" y="465" width="355" height="95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 353px; height: 1px; padding-top: 472px; margin-left: 2706px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b> + Behavior Planning + </b> + </div> + </div> + </div> + </foreignObject> + <text x="2883" y="484" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Behavior Planning + </text> + </switch> + </g> + <path d="M 2882.5 686 L 2882.5 725 L 2975 725 L 2975 760.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 2975 772.76 L 2969 760.76 L 2981 760.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="2705" y="591" width="355" height="95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 353px; height: 1px; padding-top: 598px; margin-left: 2706px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b> + Motion Planning + </b> + </div> + </div> + </div> + </foreignObject> + <text x="2883" y="610" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Motion Planning + </text> + </switch> + </g> + <path d="M 2975 831 L 2975 884.81" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 2975 896.81 L 2969 884.81 L 2981 884.81 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="2650" y="775" width="650" height="56" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 803px; margin-left: 2651px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b> + Validation + </b> + </div> + </div> + </div> + </foreignObject> + <text x="2975" y="807" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Validation + </text> + </switch> + </g> + <rect x="2590" y="899.05" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 924px; margin-left: 2591px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Control Component + </div> + </div> + </div> + </foreignObject> + <text x="2975" y="928" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Control Component + </text> + </switch> + </g> + <rect x="2610" y="230" width="140" height="30" fill="none" stroke="none" pointer-events="all" transform="translate(2,3)" opacity="0.25"/> + <rect x="2610" y="230" width="140" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 245px; margin-left: 2680px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"> + <b> + Planning Component + </b> + </div> + </div> + </div> + </foreignObject> + <text x="2680" y="249" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Planning Component + </text> + </switch> + </g> + <path d="M 2975 169 L 2975 254.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 2975 266.76 L 2969 254.76 L 2981 254.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="2430" y="725" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 790px; margin-left: 2431px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style=""> + System + </div> + <div style=""> + Component + </div> + </div> + </div> + </div> + </foreignObject> + <text x="2470" y="794" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + System... + </text> + </switch> + </g> + <path d="M 2730 165 L 2730 200.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 2730 212.76 L 2724 200.76 L 2736 200.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="2430" y="217.05" width="80" height="60" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 247px; margin-left: 2431px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Map + <br/> + Component + </div> + </div> + </div> + </foreignObject> + <text x="2470" y="251" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Map... + </text> + </switch> + </g> + <rect x="2723" y="498.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 508px; margin-left: 2724px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Lane Change + </div> + </div> + </div> + </div> + </foreignObject> + <text x="2768" y="511" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Lane Change + </text> + </switch> + </g> + <rect x="2838" y="498.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 508px; margin-left: 2839px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Intersection + </div> + </div> + </div> + </div> + </foreignObject> + <text x="2883" y="511" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Intersection + </text> + </switch> + </g> + <rect x="2950" y="498.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 508px; margin-left: 2951px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Crosswalk + </div> + </div> + </div> + </div> + </foreignObject> + <text x="2995" y="511" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Crosswalk + </text> + </switch> + </g> + <rect x="2950" y="528.03" width="89" height="18.97" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 538px; margin-left: 2951px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style=""> + <span style="border-color: var(--border-color);"> + Third-party Module + </span> + <br/> + </div> + </div> + </div> + </div> + </foreignObject> + <text x="2995" y="541" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Third-party Mod... + </text> + </switch> + </g> + <rect x="2723" y="628.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 638px; margin-left: 2724px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Path Smooth + </div> + </div> + </div> + </div> + </foreignObject> + <text x="2768" y="641" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Path Smooth + </text> + </switch> + </g> + <rect x="2838" y="628.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 638px; margin-left: 2839px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Velocity Smooth + </div> + </div> + </div> + </div> + </foreignObject> + <text x="2883" y="641" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Velocity Smooth + </text> + </switch> + </g> + <rect x="2723" y="659.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 669px; margin-left: 2724px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Collision Check + </div> + </div> + </div> + </div> + </foreignObject> + <text x="2768" y="672" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Collision Check + </text> + </switch> + </g> + <rect x="2950" y="659.03" width="89" height="18.97" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 669px; margin-left: 2951px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style=""> + Third-party Module + <br/> + </div> + </div> + </div> + </div> + </foreignObject> + <text x="2995" y="672" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Third-party Mod... + </text> + </switch> + </g> + <rect x="3152" y="508.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 518px; margin-left: 3153px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Free Space + </div> + </div> + </div> + </div> + </foreignObject> + <text x="3197" y="521" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Free Space + </text> + </switch> + </g> + <rect x="3152" y="539.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 549px; margin-left: 3153px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Cost map + </div> + </div> + </div> + </div> + </foreignObject> + <text x="3197" y="552" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Cost map + </text> + </switch> + </g> + <rect x="3152" y="572.03" width="89" height="18.97" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 582px; margin-left: 3153px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style=""> + Third-party Module + <br/> + </div> + </div> + </div> + </div> + </foreignObject> + <text x="3197" y="585" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Third-party Mod... + </text> + </switch> + </g> + <path d="M 2510 381.76 L 2575.76 381.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 2587.76 381.78 L 2575.76 387.77 L 2575.77 375.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 2510 501.76 L 2575.76 501.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 2587.76 501.78 L 2575.76 507.77 L 2575.77 495.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 2510 646.76 L 2575.76 646.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 2587.76 646.78 L 2575.76 652.77 L 2575.77 640.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 2524.56 790.11 L 2590 789.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 2512.56 790.15 L 2524.53 784.11 L 2524.58 796.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="3102" y="290" width="122" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 120px; height: 1px; padding-top: 299px; margin-left: 3103px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Route Planning + </div> + </div> + </div> + </div> + </foreignObject> + <text x="3163" y="303" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Route Planning + </text> + </switch> + </g> + <rect x="2723" y="528.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 538px; margin-left: 2724px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Avoidance + </div> + </div> + </div> + </div> + </foreignObject> + <text x="2768" y="541" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Avoidance + </text> + </switch> + </g> + <rect x="2838" y="528.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 538px; margin-left: 2839px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Pull Over + </div> + </div> + </div> + </div> + </foreignObject> + <text x="2883" y="541" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Pull Over + </text> + </switch> + </g> + <rect x="2950" y="628.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 638px; margin-left: 2951px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Drivable Area + </div> + </div> + </div> + </div> + </foreignObject> + <text x="2995" y="641" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Drivable Area + </text> + </switch> + </g> + <rect x="2838" y="659.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 669px; margin-left: 2839px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Slow Down + </div> + </div> + </div> + </div> + </foreignObject> + <text x="2883" y="672" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Slow Down + </text> + </switch> + </g> + <rect x="3063" y="793.51" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 803px; margin-left: 3064px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + TTC Check + </div> + </div> + </div> + </div> + </foreignObject> + <text x="3108" y="806" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + TTC Check + </text> + </switch> + </g> + <rect x="3173" y="793.51" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 803px; margin-left: 3174px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + ACC Check + </div> + </div> + </div> + </div> + </foreignObject> + <text x="3218" y="806" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + ACC Check + </text> + </switch> + </g> + <rect x="210" y="15" width="700" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 698px; height: 1px; padding-top: 30px; margin-left: 211px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 25px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Replace the entier planning component + </div> + </div> + </div> + </foreignObject> + <text x="560" y="38" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="25px" text-anchor="middle"> + Replace the entier planning component + </text> + </switch> + </g> + <rect x="1410" y="15" width="700" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 698px; height: 1px; padding-top: 30px; margin-left: 1411px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 25px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Replace the planning sub-component, + <br/> + or add a new scenario component + </div> + </div> + </div> + </foreignObject> + <text x="1760" y="38" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="25px" text-anchor="middle"> + Replace the planning sub-component,... + </text> + </switch> + </g> + <rect x="2630" y="15" width="700" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 698px; height: 1px; padding-top: 30px; margin-left: 2631px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 25px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Add a new planning module + </div> + </div> + </div> + </foreignObject> + <text x="2980" y="38" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="25px" text-anchor="middle"> + Add a new planning module + </text> + </switch> + </g> + </g> + <switch> + <g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/> + <a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"> + <text text-anchor="middle" font-size="10px" x="50%" y="100%"> + Text is not SVG - cannot display + </text> + </a> + </switch> +</svg> \ No newline at end of file diff --git a/docs/design/autoware-architecture/planning/index.md b/docs/design/autoware-architecture/planning/index.md index d2286982393..edde599b0d2 100644 --- a/docs/design/autoware-architecture/planning/index.md +++ b/docs/design/autoware-architecture/planning/index.md @@ -2,10 +2,6 @@ ## Purpose of this document -<!-- この文書は、Planning Componentの開発における目標やハイレベルな設計戦略、およびそれに関連する意思決定とその理由を説明します。このドキュメントを通じて、すべてのOSS開発者は、Planning Componentがどのような設計思想や制約のもとで設計され、どのような目標を達成するために開発が行われているのかを理解することができます。これにより、円滑な開発参加が可能となります。 - -さらに、(これらの情報は将来的に分離して管理されるかもしれませんが、)具体的なリファレンス実装や提供される機能の一覧も後半に記載されています。これにより、開発者やユーザーは、Planning Componentを使用することで現在何が可能なのか、機能をどのように活用したり、拡張したり、追加したりすることができるのかを理解することができます。 --> - This document outlines the goals, high-level design strategies, and related rationales in the development of the Planning Component. Through this document, all OSS developers will be able to comprehend the design philosophy, goals and constraints under which the Planning Component is designed. This will enable them to participate seamlessly in the development. Furthermore, a list of concrete reference implementations and provided features is also included in the latter part of this document, while this information might be managed separately in the future. This allows developers and users to understand what is currently possible with the Planning Component, how to utilize, expand, or add to its features. @@ -14,15 +10,13 @@ Furthermore, a list of concrete reference implementations and provided features The role of the Planning component is to generate a trajectory (path and velocity) of the self-driving vehicle that is safe and well-regulated while satisfying the given mission. -<!-- 全体の設計においては、microautonomyのコンセプトに従い、適切なモジュール化と明確なインターフェース定義、およびそれにって得られる高い拡張性を重要視します。すなわち、Autowareにおけるplanningモジュールの目的は、世の中すべての複雑なUseCaseを達成することではなく(もちろん基本的なUseCaseが達成できるレベルのソフトはベースとして提供されるべきですが)、ユーザーの要求レベルに合わせて適切にカスタマイズできる(更には必要な機能が適切に追加開発できる)platformを提供することです。 --> - -In our overall design, we emphasize the concept of "[microautonomy](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts)". This term refers to a design approach that focuses on the proper modularization of functions, clear definition of interfaces between these modules, and as a result, high expandability of the system. +In our overall design, we emphasize the concept of [microautonomy architecture](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts). This term refers to a design approach that focuses on the proper modularization of functions, clear definition of interfaces between these modules, and as a result, high expandability of the system. Therefore, the goal of the Planning component is set not to solve every conceivable complex use case (although we do aim to support basic ones), but rather to provide a platform that can be customized to the user's needs and can facilitate the development of additional features. -The goal of the Planning component is not to solve every conceivable complex use case (although we do aim to support basic ones), but rather to provide a platform that can be customized to the user's needs and can facilitate the development of additional features. +To clarify the design concepts, the following points are listed as goals and non-goals. **Goals:** -- The basic functions are provided so that a simple ODD (Operational Design Domain) can be defined. +- The basic functions are provided so that a simple Operational Design Domain (ODD) can be defined. - The functionality is modularized to accommodate the third-party components. That is, a complicated or realistic ODD needs not be defined by the basic functions provided by default. - The capability is extensible with the third-party components or the decision of human operators. @@ -31,22 +25,20 @@ The goal of the Planning component is not to solve every conceivable complex use **Non-goals:** -To clarify our design concepts, the following points are listed as non-goals. - - The Planning component is not self-contained but can be extended and enhanced with third parties. - The Planning component is not aimed at the complete functionality and capability. - The Planning component is not designed to always outperform human drivers. - The Planning component is not capable of “never crashes”. -While "never crashes" is not a present goals, we need to create an architecture that can potentially achieve such a state with third-party components or decision of human operators or future enhancement. +While performance such as "never crashes" is not a present goals, we need to create an architecture that can potentially achieve such a state with third-party components or decision of human operators or future enhancement. ## Requirements -ここはGoalとかではなく、Pythonで書く必要がある、みたいなことを書く。PlanningにRequirementsって何がある? +WIP ## Assumptions -Assumptiosがあった方が良いらしいが、例えばどんなことだろう? +WIP ## High level design @@ -66,61 +58,32 @@ The Planning component consists of the following sub-components: Following the microautonomy architecture, we adopt a modular system framework where the tasks are implemented as modules that can be dynamically loaded and unloaded to achieve different features depending on the given use cases. For instance, the Behavior Planning component includes modules such as lane change, intersection, and crosswalk modules. -<!-- **Rationale** -Planningと各Componentの分離について。planningとperceptionやcontrol componentを分離して開発することにより、third-party のperception component などとの連携は非常に簡単に実行できる(利用するコンポーネントを切り替えるだけである)。しかし、ここには性能と拡張性のトレードオフが存在する。例えば、perception componentは本来planning componentが必要とする物体に対してのみ認識と移動予測を行えば十分であるが、componentを分離するとこのような密なコミュニケーションを行うことができない。また、計画と制御の分離によって、車両運動性能を適切に考慮した上で計画を行うことが難しくなる。これを補うためには、interfaceでやり取りをする情報を増やす必要があったり、計算量を増やす必要が出てくる。 - -**Rationale** -Scenario Planningレイヤーの導入について。レーン構造が整備されているエリアでの走行と、駐車場のようなフリースペースエリアの走行ではインターフェースの定義や利用可能な情報のレベルが異なる。例えば、Lane Drivingでは地図のIDがついた経路を取り扱えるのに対し、これはフリースペースでの計画に対して適切ではない。また今後さらに異なるインターフェースを持つべきシナリオが現れた際に柔軟に対応できるように、シナリオレベルでplanningのコンポーネントを切り替えるという仕組みを導入している。一方で、異なるシナリオ間でモジュールを再利用できない点は課題として残っている。 - -**Rationale** -BehaviorとMotionの分離について。Planning全体を振る舞いを決定する「Behavior」と、最終的な運動動作を決定する「Motion」に分離することは王道のアプローチである。ただしこれは性能とのトレードオフであり、機能を分離するほど性能が劣化する。例えば、Behaviorは最終的にMotionがどのような計算をするかを知る前に判断を行わなければならず、一般的に保守的な判断を行うことになる。一方で、behaviorとmotionを結合したシステムでは判断と乗り心地といった概念が結合しており、機能の拡張性の面で課題が残る。我々は拡張性を重要視し、behavior-motionの構成で開発を進めている。(昔に議論された[こちらの資料](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/main/docs/design/software_architecture/Planning/DesignRationale.md)も役に立つ。) --> - ### Discussions The following provides discussion points on trade-offs in the architecture. From this information, you can see the current design limitation, challenges, and potential improvement. -**Rationale for the separation of planning and other components** +**Separation of planning and other components** By developing the planning, perception, localization, and control components separately, it becomes easy to collaborate with third-party components in the component level. However, there's a trade-off between performance and extensibility here. For instance, a perception component would ideally perform recognition and motion prediction only for the objects that the planning component needs, but separating the components hinders such close communication. Additionally, separating planning and control makes it harder to consider vehicle motion performance when planning. To compensate for this, it's necessary to either increase the information exchanged via the interface or increase the computation load. -**Rationale for introducing the Scenario Planning layer** +**Introducing the Scenario Planning layer** There are different requirements for interfaces between driving in well-structured lanes and driving in a free-space area like a parking lot. For example, while Lane Driving can handle routes with map IDs, this is not appropriate for planning in free space. The mechanism that switches planning sub-components at the scenario level (Lane Driving, Parking, etc) enables a flexible design of the interface, however, it has a drawbacks of the reuse of modules across different scenarios. - -**Rationale for the separation of Behavior and Motion** +**Separation of Behavior and Motion** One of the classic approach to Planning involves dividing it into "Behavior", which decides the action, and "Motion", which determines the final movement. However, this separation implies a trade-off with performance, as performance tends to degrade with increasing separation of functions. For example, Behavior needs to make decisions without prior knowledge of the computations that Motion will eventually perform, which generally results in conservative decision-making. On the other hand, if behavior and motion are integrated, motion performance and decision-making become interdependent, creating challenges in terms of expandability, such as when you wish to extend only the decision-making function to follow a regional traffic rules. -To understand this background. this [previously discussed document](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/main/docs/design/software_architecture/Planning/DesignRationale.md) may be useful. - +To understand this background, this [previously discussed document](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/main/docs/design/software_architecture/Planning/DesignRationale.md) may be useful. ### Mechanism and policy -Planningにおいて、様々なニーズやODDへの適応するために、いくつかのポリシーを定義します。例えば、自動走行レベルにおいて、Planningは以下のpolicyを提供します。 +In planning, several policies are defined to achieve various user's needs and ODDs. For example, in terms of the level of autonomous driving, Planning provides the following policies. - **Fully-autonomous** that delegates all decision makings to the system, thus the system is responsible for the safety. - **Semi-autonomous** that delegates most of decision makings to the system but the rest of decision makings strictly defined remain with the human operator, thus both the system and the human operator are responsible for the safety. - **Motion-autonomous** that delegates only the low-level motion plan to the system, while high-level mission and behavior plannings remain with the human operator, thus the human operator is responsible for the safety. -このpolicyは求められているユースケースやODDによって変わります。走行前に決定されているかもしれないし、走行中に動的に切り替わる可能性もあります。ここで、必ずしもFully-autonomousのみがゴールではないことに注意してください。期待するODDやセンサー構成、センサーコストによっては、Semi-autonomousの前提でシステムを作成することもあります。我々のゴールは、これらのポリシーが柔軟に変更可能であるアーキテクチャを設計することです。 - -TODO: このautonomous levelのポリシー変更は設計方針が決まっていないので要議論。HMIとの連携でこれらの実現は可能かと思われるが、厳密に検討されていない。 - - -It is extremely important to separate the mechanism and policy, allowing us to modularize the planning components not only from the software point of view but also from the actual logic point of view. In the literature, the planning system framework often falls into a hierarchical framework and a parallel framework. The hierarchical framework classifies the tasks into multiple stages, and they are executed in the order of stages constructed hierarchically. The parallel framework, on the other hand, does not construct a hierarchy of the tasks but allows the features to have their own mechanism. Examples of these frameworks are depicted below. - -<!-- 以下、planning design docから --> - -<!-- It is extremely important to separate the mechanism and policy, allowing us to modularize the Behavior Planning component and the Motion Planning component not only from the software point of view but also from the actual logic point of view. A bad example of logic is based on such a design that takes the minimum of the velocity levels that are calculated by the modules of the Behavior Planning component and the Motion Planning component. You cannot compare these velocity levels in the same logic, because the behavior is derived by data observed in the environment, while the motion is determined by mathematical formulas. The right design is that we make one policy that uses the velocity level calculated by the Behavior Planning component and another policy that uses the velocity level calculated by the Motion Planning component, and develop the mechanism in which one of the policies can be selected by another logic (this could be a human operator to begin with) depending on the use cases. More specifically, we must develop the mechanism in which the modules to be activated can be changed by selecting the policy. Who to select the policy is undefined in design, though it should be eventually the system but can be the human operator at the beginning. The functionality and capability that fail to work out when the policy is selected by the human operator will not work out anyway even when the policy is selected by the system autonomously. - -In the literature, the system framework often falls into a hierarchical framework and a parallel framework. The hierarchical framework classifies the tasks into multiple stages, and they are executed in the order of stages constructed hierarchically. The parallel framework, on the other hand, does not construct a hierarchy of the tasks but allows the features to have their own mechanism. Examples of these frameworks are depicted below. - -J. Wei, J. M. Snider, T. Gu, J. M. Dolan and B. Litkouhi, "A behavioral planning framework for autonomous driving," 2014 IEEE Intelligent Vehicles Symposium Proceedings, 2014, pp. 458-464, doi: 10.1109/IVS.2014.6856582. - -Our planning components are built based on the microautonomy architecture with Autoware. We adopt a modular system framework where the tasks are implemented as modules that can be dynamically loaded and unloaded to achieve different features depending on the given use cases, like the parallel framework, and the modules belong to the components constructed hierarchically, like the hierarchical framework. This way, we benefit from the advantages of the two frameworks. --> - - - - +This policy can vary depending on the desired use cases and ODDs. It might be determined before driving begins, or it may switch dynamically during operation. The activated modules and their configuration change according to the policy to achieve the expected behaviors. Note that our goal is not necessarily to achieve only fully-autonomous. Depending on the expected ODD, sensor configuration, and sensor costs, we may also design the system on the premise of semi-autonomy. Our goal as an OSS platform is to design an architecture that allows for flexible changes to these policies. [Separation the mechanism and policy](https://en.wikipedia.org/wiki/Separation_of_mechanism_and_policy) allows us to modularize the planning components not only from the software point of view but also from the actual logic point of view. +**TODO:** How to handle the policy of the autonomous level has not yet been finalized and needs further discussion. While it is believed that these can be implemented in collaboration with the Human-Machine Interface, further investigation and discussion is needed. ## Component interface @@ -173,7 +136,11 @@ This section describes the inputs and outputs of the Planning Component and of i ## How to add new features (WIP) -As mentioned in the goal session, this planning module is designed to be extensible by third-party components. For specific instructions on how to add new modules and expand its functionality, please refer to the provided documentation or guidelines (WIP). +As mentioned in the goal session, this planning module is designed to be extensible by third-party components. When incorporating third-party components, there are several approaches. + +As stated in the figure, you can completely replace the entire planning function, replace or add to the planning sub-components, or add new modules into the existing planning component. The latter part offers advantages as it allows for cooperation with the existing Planning functions, but it does require adherence to the detailed interfaces defined within the Planning Component. Conversely, while replacing the entire planning function enables you to utilize other components of Autoware, it does not allow for integration with the existing planning functions. For specific instructions on how to add new modules and expand its functionality, please refer to the forthcoming documentation or guidelines (WIP). + + ## Detailed information diff --git a/docs/design/autoware-architecture/planning/planning-system-literature.png b/docs/design/autoware-architecture/planning/planning-system-literature.png new file mode 100644 index 0000000000000000000000000000000000000000..ce1c81aba3701ef0f3a55c7e861e5508bce1e423 GIT binary patch literal 82598 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%0Dr^gDy5NuWunTV<u1Z@`^ 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 literal 0 HcmV?d00001 From f7af713ad0dd70eaa373ece24bfc1b2f5e544b74 Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Tue, 20 Jun 2023 21:07:26 +0900 Subject: [PATCH 08/19] update Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- docs/design/autoware-architecture/planning/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/design/autoware-architecture/planning/index.md b/docs/design/autoware-architecture/planning/index.md index edde599b0d2..d249c33b52e 100644 --- a/docs/design/autoware-architecture/planning/index.md +++ b/docs/design/autoware-architecture/planning/index.md @@ -142,7 +142,7 @@ As stated in the figure, you can completely replace the entire planning function  -## Detailed information +## Detailed design ### Supported features From 8586bac09faf18dae92af7cc3556213caa146a74 Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Wed, 21 Jun 2023 10:17:17 +0900 Subject: [PATCH 09/19] update purpose Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- docs/design/autoware-architecture/planning/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/design/autoware-architecture/planning/index.md b/docs/design/autoware-architecture/planning/index.md index d249c33b52e..bbee03bdf37 100644 --- a/docs/design/autoware-architecture/planning/index.md +++ b/docs/design/autoware-architecture/planning/index.md @@ -2,9 +2,9 @@ ## Purpose of this document -This document outlines the goals, high-level design strategies, and related rationales in the development of the Planning Component. Through this document, all OSS developers will be able to comprehend the design philosophy, goals and constraints under which the Planning Component is designed. This will enable them to participate seamlessly in the development. +This document outlines the high-level design strategies, goals and related rationales in the development of the Planning Component. Through this document, it is expected that all OSS developers will comprehend the design philosophy, goals and constraints under which the Planning Component is designed, and participate seamlessly in the development. -Furthermore, a list of concrete reference implementations and provided features is also included in the latter part of this document, while this information might be managed separately in the future. This allows developers and users to understand what is currently possible with the Planning Component, how to utilize, expand, or add to its features. +Furthermore, detailed design of the reference imprementations and provided featres are are included in the latter part of this document, while this information might be managed separately in the future. This allows developers and users to understand what is currently available with the Planning Component, how to utilize, expand, or add to its features. ## Goals and non-goals From 21f2678278c085fe964f265eadb8797cadba0322 Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Wed, 21 Jun 2023 10:20:39 +0900 Subject: [PATCH 10/19] update goal descriptio Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- docs/design/autoware-architecture/planning/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/design/autoware-architecture/planning/index.md b/docs/design/autoware-architecture/planning/index.md index bbee03bdf37..7a8270fb951 100644 --- a/docs/design/autoware-architecture/planning/index.md +++ b/docs/design/autoware-architecture/planning/index.md @@ -10,7 +10,7 @@ Furthermore, detailed design of the reference imprementations and provided featr The role of the Planning component is to generate a trajectory (path and velocity) of the self-driving vehicle that is safe and well-regulated while satisfying the given mission. -In our overall design, we emphasize the concept of [microautonomy architecture](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts). This term refers to a design approach that focuses on the proper modularization of functions, clear definition of interfaces between these modules, and as a result, high expandability of the system. Therefore, the goal of the Planning component is set not to solve every conceivable complex use case (although we do aim to support basic ones), but rather to provide a platform that can be customized to the user's needs and can facilitate the development of additional features. +In our overall design, we emphasize the concept of [microautonomy architecture](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts). This term refers to a design approach that focuses on the proper modularization of functions, clear definition of interfaces between these modules, and as a result, high expandability of the system. Given this context, the goal of the Planning component is set not to solve every conceivable complex use case (although we do aim to support basic ones), but rather to provide a platform that can be customized to the user's needs and can facilitate the development of additional features. To clarify the design concepts, the following points are listed as goals and non-goals. From 14a4177c7291387e630e1d5c451c46084d0b0661 Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Wed, 21 Jun 2023 21:09:41 +0900 Subject: [PATCH 11/19] add japanese version temp Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- .../autoware-architecture/planning/index.md | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/docs/design/autoware-architecture/planning/index.md b/docs/design/autoware-architecture/planning/index.md index 7a8270fb951..638e22bc9ea 100644 --- a/docs/design/autoware-architecture/planning/index.md +++ b/docs/design/autoware-architecture/planning/index.md @@ -4,25 +4,42 @@ This document outlines the high-level design strategies, goals and related rationales in the development of the Planning Component. Through this document, it is expected that all OSS developers will comprehend the design philosophy, goals and constraints under which the Planning Component is designed, and participate seamlessly in the development. +このドキュメントは Planning コンポーネントの開発における目標、ハイレベルな設計方針、およびそれらの議論ポイントをまとめています。このドキュメントを通じて、すべてのOSS開発者はPlanning コンポーネントがどのような設計思想、目標、制約の下で設計されているかを理解することができ、それによってスムーズに開発に参加することができます。 + Furthermore, detailed design of the reference imprementations and provided featres are are included in the latter part of this document, while this information might be managed separately in the future. This allows developers and users to understand what is currently available with the Planning Component, how to utilize, expand, or add to its features. +ドキュメントの後半では、詳細設計としてリファレンス実装や提供機能の一覧も記載しています(この情報は将来的に別のドキュメントで管理されるかもしれません)。これにより、開発者やユーザーは Planning コンポーネントの現在の実装、およびそれらをどのように活用、拡張するかを理解することができます。 + ## Goals and non-goals The role of the Planning component is to generate a trajectory (path and velocity) of the self-driving vehicle that is safe and well-regulated while satisfying the given mission. +Planning コンポーネントの役割は、与えられたミッションを満たしつつ、安全で交通ルールに基づいた自動運転車両の目標軌道(経路と速度)を生成することです。 + In our overall design, we emphasize the concept of [microautonomy architecture](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts). This term refers to a design approach that focuses on the proper modularization of functions, clear definition of interfaces between these modules, and as a result, high expandability of the system. Given this context, the goal of the Planning component is set not to solve every conceivable complex use case (although we do aim to support basic ones), but rather to provide a platform that can be customized to the user's needs and can facilitate the development of additional features. +Planningの全体設計において、我々は [microautonomy architecture](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts) の概念を重視しています。microautonomy とは、適切な機能のモジュール化やインターフェースの明確な定義に基づき、システムの高い拡張性を焦点を当てた設計コンセプトです。そのため Planning component の目標は、すべての考えられる複雑なユースケースを解決することではなく(基本的なものはサポートすることを目指していますが)、ユーザーのニーズに合わせてカスタマイズでき、第三者によって機能が容易に追加可能なプラットフォームを提供することに設定されています。 + To clarify the design concepts, the following points are listed as goals and non-goals. +この設計コンセプトを明確にするため、以下に Goal と Non-Goal をリスト化します。 + **Goals:** - The basic functions are provided so that a simple Operational Design Domain (ODD) can be defined. + - **TODO**: need more information for the "simple ODD" - The functionality is modularized to accommodate the third-party components. That is, a complicated or realistic ODD needs not be defined by the basic functions provided by default. + - **TODO**: need to clarify the meaning of the "realistic ODD" - The capability is extensible with the third-party components or the decision of human operators. <!-- Not sure what the following says. --> <!-- - The mechanism and policy are separated to allow the system or operators to change the behavior of the ego vehicle. Ultimately speaking, the policy can be set to crash an obstacle and the mechanism always follows. Otherwise, the system is not safe from the design point of view. --> +- シンプルな運用設計領域(ODD)を定義できるレベルの基本的なplanning機能を提供する + - **TODO**: シンプルの定義はもう少し詳しく書いたほうが良いかも +- サードパーティによる機能の追加が容易なように、planningの機能はモジュール化されている。 +- 人間の操作者の決定やサードパーティのコンポーネントによって機能を拡張できる。 + **Non-goals:** - The Planning component is not self-contained but can be extended and enhanced with third parties. @@ -30,8 +47,15 @@ To clarify the design concepts, the following points are listed as goals and non - The Planning component is not designed to always outperform human drivers. - The Planning component is not capable of “never crashes”. +- Planningコンポーネントは自己完結している必要はない。ただし、サードパーティと共に拡張・強化することができることは必要。 +- Planningコンポーネントは自動運転としての完全な機能を目指しているわけではない。 +- Planningコンポーネントは常に人間のドライバーを上回るように設計されているわけではない。 +- Planningコンポーネントは「絶対に衝突しない」という性能を持っているわけではない。 + While performance such as "never crashes" is not a present goals, we need to create an architecture that can potentially achieve such a state with third-party components or decision of human operators or future enhancement. +「絶対に衝突しない」といった性能は現在の目標ではありませんが、サードパーティのコンポーネントや人間の操作者の決定、または将来の強化によってそのような状態を達成できるようなアーキテクチャを作成することは我々の目標です。 + ## Requirements WIP @@ -48,6 +72,8 @@ This diagram describes the high-level architecture of the Planning Component. The Planning component consists of the following sub-components: +Planning コンポーネントはいくつかのサブコンポーネントからなります。 + - **Mission Planning**: Calculates the route from a starting position and a given goal based on map information. - **Scenario Planning**: Determines the trajectory based on the current scenario, such as Lane Driving or Parking. - **Lane Driving**: Calculates the trajectory for driving within constructed lanes. @@ -56,21 +82,42 @@ The Planning component consists of the following sub-components: - **Parking**: Calculates the trajectory for parking in unstructured areas. - **Validation**: Verifies the safety of the trajectory. +- **Mission Planning**: 地図情報をもとに、初期位置からゴールまでのルートを計算します。 +- **Scenario Planning**: Lane Driving や Parkingなどのシナリオに基づいて、適切な目標軌道を計算します。 + - **Lane Driving**: レーン構造が存在する場所において、適切な目標軌道を計算します。 + - **Behavior Planner**: 交通ルールや安全を考慮して適切な経路を計算します。 + - **Motion Planner**: Behavior Plannerの出力を元に、車両運動や乗り心地を考慮した目標軌道を計算します。 + - **Parking**: 駐車場などのフリースペース環境において、適切な目標軌道を計算します。 +- **Validation**: 計算された目標軌道の安全性を検証します。 + Following the microautonomy architecture, we adopt a modular system framework where the tasks are implemented as modules that can be dynamically loaded and unloaded to achieve different features depending on the given use cases. For instance, the Behavior Planning component includes modules such as lane change, intersection, and crosswalk modules. +ここでは microautonomy アーキテクチャに従い、モジュール型のシステムフレームワークを採用しています。planningの機能はモジュールとして実装され、これらのモジュールは与えられたユースケースに応じて動的にロードおよびアンロードされます。例えば、behavior planning のサブコンポーネントには、レーンチェンジ、交差点、横断歩道モジュールなどのモジュールが含まれています。 + ### Discussions The following provides discussion points on trade-offs in the architecture. From this information, you can see the current design limitation, challenges, and potential improvement. +以下では、アーキテクチャのトレードオフについての議論のポイントを提供します。この情報から、現在の設計の限界、課題、そして潜在的な改善点が見えてきます。 + **Separation of planning and other components** By developing the planning, perception, localization, and control components separately, it becomes easy to collaborate with third-party components in the component level. However, there's a trade-off between performance and extensibility here. For instance, a perception component would ideally perform recognition and motion prediction only for the objects that the planning component needs, but separating the components hinders such close communication. Additionally, separating planning and control makes it harder to consider vehicle motion performance when planning. To compensate for this, it's necessary to either increase the information exchanged via the interface or increase the computation load. +**planningと他のコンポーネントの分離** +planning、perception、localization、controlなどのコンポーネントを分離して開発することで、サードパーティ製のコンポーネントとの連携が容易になります。しかし、ここではパフォーマンスと拡張性の間にトレードオフがあります。例えば、perception コンポーネントは理想的には planning コンポーネントが必要とするオブジェクトだけを認識すれば十分ですが、コンポーネントを分離することでそのような密接なコミュニケーションが難しくなり、不要なオブジェクトに対しても処理を実行する必要があります。また、計画と制御を分離すると、計画時に車両の運動性能を考慮することが難しくなるという性能面の欠点があります。これを補うためには、インターフェースの情報量を増やすか、計算負荷を増やすなど対応が必要になります。 + **Introducing the Scenario Planning layer** There are different requirements for interfaces between driving in well-structured lanes and driving in a free-space area like a parking lot. For example, while Lane Driving can handle routes with map IDs, this is not appropriate for planning in free space. The mechanism that switches planning sub-components at the scenario level (Lane Driving, Parking, etc) enables a flexible design of the interface, however, it has a drawbacks of the reuse of modules across different scenarios. +**Scenario Planning の導入** +整備されたレーンを走行する場合と、駐車場のような自由空間での走行では、インターフェースに対する情報要求が異なります。例えば、レーン走行中は地図のレーン情報を処理できますが、これは自由空間での計画には適していません。シナリオレベル(Lane Driving / Parking)で Planning サブコンポーネントを切り替えるメカニズムは、インターフェースの柔軟な設計を可能にしますが、異なるシナリオ間でモジュールを再利用できなくなるという欠点もあります。 + **Separation of Behavior and Motion** One of the classic approach to Planning involves dividing it into "Behavior", which decides the action, and "Motion", which determines the final movement. However, this separation implies a trade-off with performance, as performance tends to degrade with increasing separation of functions. For example, Behavior needs to make decisions without prior knowledge of the computations that Motion will eventually perform, which generally results in conservative decision-making. On the other hand, if behavior and motion are integrated, motion performance and decision-making become interdependent, creating challenges in terms of expandability, such as when you wish to extend only the decision-making function to follow a regional traffic rules. +**Behavior と Motion の分離** +Planningコンポーネントを行動を決定する "Behavior" と、最終的な動きを決定する ”Motion” に分けることは古典的なアプローチの一つです。しかし、この方針にはパフォーマンスとのトレードオフが存在します。機能の分離が進むとパフォーマンスは一般的に低下する傾向があります。例えば、Behavior は、最終的に Motion が行う計算結果を知るより前に意思決定を行わなければならないため、一般的に保守的な意思決定が行われます。一方、BehaviorとMotionが一体化している場合、運動性能と意思決定が依存するため、例えば国ごとに異なる交通ルールに従うために意思決定機能を拡張する場合において運動性能を考慮する必要があるといった拡張性の課題が生じます。 + To understand this background, this [previously discussed document](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/main/docs/design/software_architecture/Planning/DesignRationale.md) may be useful. ### Mechanism and policy @@ -81,8 +128,16 @@ In planning, several policies are defined to achieve various user's needs and OD - **Semi-autonomous** that delegates most of decision makings to the system but the rest of decision makings strictly defined remain with the human operator, thus both the system and the human operator are responsible for the safety. - **Motion-autonomous** that delegates only the low-level motion plan to the system, while high-level mission and behavior plannings remain with the human operator, thus the human operator is responsible for the safety. +Planningでは、様々なODDやユーザーのニーズを達成するために、いくつかのポリシーが定義されます。例えば、自動運転のレベルにおいて、Planningは以下のポリシーを提供します。 + +- **Fully-autonomous** :すべての意思決定をシステムに委ね、システムが安全性を担保します。 +- **Semi-autonomous**:ほとんどの意思決定をシステムに委ねますが、一部の意思決定は人間のオペレーターに委ねられ、システムと人間のオペレーターの両方が安全性を担保します。 +- **Motion-autonomous**:低レベルの運動計画のみをシステムに委ね、高レベルのミッションと行動計画は人間のオペレーターが行い、人間のオペレーターが安全性を担保します。 + This policy can vary depending on the desired use cases and ODDs. It might be determined before driving begins, or it may switch dynamically during operation. The activated modules and their configuration change according to the policy to achieve the expected behaviors. Note that our goal is not necessarily to achieve only fully-autonomous. Depending on the expected ODD, sensor configuration, and sensor costs, we may also design the system on the premise of semi-autonomy. Our goal as an OSS platform is to design an architecture that allows for flexible changes to these policies. [Separation the mechanism and policy](https://en.wikipedia.org/wiki/Separation_of_mechanism_and_policy) allows us to modularize the planning components not only from the software point of view but also from the actual logic point of view. +このポリシーは、求められるユースケースやODDにより変わります。これは走行前に決定されるかもしれませんし、走行中に動的に切り替わる可能性もあります。起動するモジュールやその設定はポリシーに従って変更され、期待される行動が実現されます。ここで注意すべきは、我々の目標が必ずしも Fully-autonomous だけであるわけではないということです。期待するODD、センサーの構成、センサーコストにより、Semi-autonomous を前提としたシステム設計を行うこともあります。OSSプラットフォームとしての我々の目標は、これらのポリシーを柔軟に変更できるアーキテクチャを設計することです。メカニズムとポリシーを分離することで、ソフトウェアの観点だけでなく、実際のロジックの観点からも計画コンポーネントをモジュラ化することが可能になります。 + **TODO:** How to handle the policy of the autonomous level has not yet been finalized and needs further discussion. While it is believed that these can be implemented in collaboration with the Human-Machine Interface, further investigation and discussion is needed. ## Component interface @@ -138,8 +193,12 @@ This section describes the inputs and outputs of the Planning Component and of i As mentioned in the goal session, this planning module is designed to be extensible by third-party components. When incorporating third-party components, there are several approaches. +ゴールのセッションで述べたように、このPlanningコンポーネントはサードパーティのコンポーネントによる拡張を可能にするように設計されています。サードパーティのコンポーネントを組み込む際にはいくつかの方法があります。 + As stated in the figure, you can completely replace the entire planning function, replace or add to the planning sub-components, or add new modules into the existing planning component. The latter part offers advantages as it allows for cooperation with the existing Planning functions, but it does require adherence to the detailed interfaces defined within the Planning Component. Conversely, while replacing the entire planning function enables you to utilize other components of Autoware, it does not allow for integration with the existing planning functions. For specific instructions on how to add new modules and expand its functionality, please refer to the forthcoming documentation or guidelines (WIP). +図に示した通り、機能の追加には「Planning Componentを完全に置き換える」、「Planningのサブコンポーネントを置き換えるまたは追加する」、「既存のPlanningコンポーネントに新たなモジュールを追加する」方法があります。後者の方法ほど、既存のPlanning機能との連携が可能であるという利点がありますが、Planningコンポーネント内で定義されている詳細なインターフェースに従う必要があります。一方、Planning機能全体を置き換えることにより、大枠のinterfaceを揃えるだけでAutowareの他のコンポーネントを利用することができますが、既存のPlanning機能との統合はできません。新しいモジュールを追加し、その機能を拡張する具体的な指示については、近日公開予定のドキュメンテーションまたはガイドライン(作業中)をご参照ください。 +  ## Detailed design From 05be7fa456a69e24290597bb874b30a833c177fa Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Mon, 21 Aug 2023 16:32:12 +0900 Subject: [PATCH 12/19] tmp Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- ...lanning-diagram-miyake-reviewed.drawio.svg | 643 ++++++++++++++++++ .../autoware-architecture/planning/index.md | 16 +- 2 files changed, 658 insertions(+), 1 deletion(-) create mode 100644 docs/design/autoware-architecture/planning/image/high-level-planning-diagram-miyake-reviewed.drawio.svg diff --git a/docs/design/autoware-architecture/planning/image/high-level-planning-diagram-miyake-reviewed.drawio.svg b/docs/design/autoware-architecture/planning/image/high-level-planning-diagram-miyake-reviewed.drawio.svg new file mode 100644 index 00000000000..e8541faf07e --- /dev/null +++ b/docs/design/autoware-architecture/planning/image/high-level-planning-diagram-miyake-reviewed.drawio.svg @@ -0,0 +1,643 @@ +<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1251px" height="836px" viewBox="-0.5 -0.5 1251 836" content="<mxfile><diagram id="8qt1-HtFgWOiWtJ-FPd8" name="planning (v0.13.0)">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</diagram></mxfile>"> + <defs/> + <g> + <rect x="990" y="102.05" width="260" height="190" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 258px; height: 1px; padding-top: 109px; margin-left: 991px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <br/> + Legend + </div> + </div> + </div> + </foreignObject> + <text x="1120" y="121" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Legend + </text> + </switch> + </g> + <path d="M 80 131.76 L 145.76 131.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 157.76 131.78 L 145.76 137.77 L 145.77 125.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="0" y="466" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 531px; margin-left: 1px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="text-align: left"> + Localization + </div> + <div style="text-align: left"> + Component + </div> + </div> + </div> + </div> + </foreignObject> + <text x="40" y="535" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Localization... + </text> + </switch> + </g> + <rect x="0" y="320" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 385px; margin-left: 1px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Perception + <br/> + Component + </div> + </div> + </div> + </foreignObject> + <text x="40" y="389" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Perception... + </text> + </switch> + </g> + <path d="M 94.56 215.11 L 160 214.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 82.56 215.15 L 94.53 209.11 L 94.58 221.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="0" y="175" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 240px; margin-left: 1px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Human + <br/> + Machine + <br/> + Interface + </div> + </div> + </div> + </foreignObject> + <text x="40" y="244" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Human... + </text> + </switch> + </g> + <rect x="160" y="0" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 25px; margin-left: 161px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + API Layer + </div> + </div> + </div> + </foreignObject> + <text x="545" y="29" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + API Layer + </text> + </switch> + </g> + <path d="M 737.5 102.05 L 737.5 64.24" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 737.5 52.24 L 743.5 64.24 L 731.5 64.24 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="160" y="102.05" width="770" height="637.95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <path d="M 545 210 Q 545 210 545 225.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 545 237.76 L 539 225.76 L 551 225.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="220" y="154" width="650" height="56" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 182px; margin-left: 221px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b> + Mission Planning + </b> + </div> + </div> + </div> + </foreignObject> + <text x="545" y="186" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Mission Planning + </text> + </switch> + </g> + <rect x="220" y="240" width="650" height="390" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 247px; margin-left: 221px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b> + <br/> + <br/> + </b> + </div> + </div> + </div> + </foreignObject> + <text x="545" y="259" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + ... + </text> + </switch> + </g> + <rect x="260" y="280" width="560" height="140" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 558px; height: 1px; padding-top: 287px; margin-left: 261px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b> + Behavior + </b> + </div> + </div> + </div> + </foreignObject> + <text x="540" y="299" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Behavior + </text> + </switch> + </g> + <rect x="260" y="466" width="560" height="112.97" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 558px; height: 1px; padding-top: 473px; margin-left: 261px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b> + Motion + </b> + </div> + </div> + </div> + </foreignObject> + <text x="540" y="485" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Motion + </text> + </switch> + </g> + <path d="M 545 716 L 545 769.81" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 545 781.81 L 539 769.81 L 551 769.81 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="220" y="660" width="650" height="56" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 688px; margin-left: 221px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <b> + Validation + </b> + </div> + </div> + </div> + </foreignObject> + <text x="545" y="692" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Validation + </text> + </switch> + </g> + <rect x="160" y="784.05" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 809px; margin-left: 161px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Control Component + </div> + </div> + </div> + </foreignObject> + <text x="545" y="813" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Control Component + </text> + </switch> + </g> + <rect x="180" y="115" width="140" height="30" fill="none" stroke="none" pointer-events="all" transform="translate(2,3)" opacity="0.25"/> + <rect x="180" y="115" width="140" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 130px; margin-left: 250px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"> + <b> + Planning Component + </b> + </div> + </div> + </div> + </foreignObject> + <text x="250" y="134" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Planning Component + </text> + </switch> + </g> + <path d="M 545 54 L 545 139.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 545 151.76 L 539 139.76 L 551 139.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="0" y="610" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 675px; margin-left: 1px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style=""> + System + </div> + <div style=""> + Component + </div> + </div> + </div> + </div> + </foreignObject> + <text x="40" y="679" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + System... + </text> + </switch> + </g> + <path d="M 300 50 L 300 85.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 300 97.76 L 294 85.76 L 306 85.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="0" y="102.05" width="80" height="60" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 132px; margin-left: 1px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Map + <br/> + Component + </div> + </div> + </div> + </foreignObject> + <text x="40" y="136" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Map... + </text> + </switch> + </g> + <rect x="378" y="333.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 343px; margin-left: 379px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Lane Change + </div> + </div> + </div> + </div> + </foreignObject> + <text x="423" y="346" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Lane Change + </text> + </switch> + </g> + <rect x="493" y="333.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 343px; margin-left: 494px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Intersection + </div> + </div> + </div> + </div> + </foreignObject> + <text x="538" y="346" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Intersection + </text> + </switch> + </g> + <rect x="605" y="333.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 343px; margin-left: 606px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Crosswalk + </div> + </div> + </div> + </div> + </foreignObject> + <text x="650" y="346" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Crosswalk + </text> + </switch> + </g> + <rect x="605" y="363.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 373px; margin-left: 606px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style=""> + etc... + </div> + </div> + </div> + </div> + </foreignObject> + <text x="650" y="376" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + etc... + </text> + </switch> + </g> + <rect x="378" y="503.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 513px; margin-left: 379px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Path Smooth + </div> + </div> + </div> + </div> + </foreignObject> + <text x="423" y="516" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Path Smooth + </text> + </switch> + </g> + <rect x="493" y="503.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 513px; margin-left: 494px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Velocity Smooth + </div> + </div> + </div> + </div> + </foreignObject> + <text x="538" y="516" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Velocity Smooth + </text> + </switch> + </g> + <rect x="378" y="534.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 544px; margin-left: 379px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Collision Check + </div> + </div> + </div> + </div> + </foreignObject> + <text x="423" y="547" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Collision Check + </text> + </switch> + </g> + <rect x="605" y="534.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 544px; margin-left: 606px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style=""> + etc... + </div> + </div> + </div> + </div> + </foreignObject> + <text x="650" y="547" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + etc... + </text> + </switch> + </g> + <path d="M 80 266.76 L 145.76 266.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 157.76 266.78 L 145.76 272.77 L 145.77 260.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 80 386.76 L 145.76 386.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 157.76 386.78 L 145.76 392.77 L 145.77 380.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 80 531.76 L 145.76 531.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 157.76 531.78 L 145.76 537.77 L 145.77 525.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 94.56 675.11 L 160 674.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 82.56 675.15 L 94.53 669.11 L 94.58 681.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="672" y="175" width="122" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 120px; height: 1px; padding-top: 184px; margin-left: 673px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Route Planning + </div> + </div> + </div> + </div> + </foreignObject> + <text x="733" y="188" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Route Planning + </text> + </switch> + </g> + <rect x="378" y="363.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 373px; margin-left: 379px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Avoidance + </div> + </div> + </div> + </div> + </foreignObject> + <text x="423" y="376" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Avoidance + </text> + </switch> + </g> + <rect x="493" y="363.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 373px; margin-left: 494px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Pull Over + </div> + </div> + </div> + </div> + </foreignObject> + <text x="538" y="376" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Pull Over + </text> + </switch> + </g> + <rect x="605" y="503.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 513px; margin-left: 606px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Drivable Area + </div> + </div> + </div> + </div> + </foreignObject> + <text x="650" y="516" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Drivable Area + </text> + </switch> + </g> + <rect x="493" y="534.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 544px; margin-left: 494px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Slow Down + </div> + </div> + </div> + </div> + </foreignObject> + <text x="538" y="547" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Slow Down + </text> + </switch> + </g> + <rect x="633" y="678.51" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 688px; margin-left: 634px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + TTC Check + </div> + </div> + </div> + </div> + </foreignObject> + <text x="678" y="691" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + TTC Check + </text> + </switch> + </g> + <rect x="743" y="678.51" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 688px; margin-left: 744px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + ACC Check + </div> + </div> + </div> + </div> + </foreignObject> + <text x="788" y="691" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + ACC Check + </text> + </switch> + </g> + <rect x="1030" y="153.1" width="180" height="27.95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 160px; margin-left: 1031px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Planning (Sub) Components + </div> + </div> + </div> + </foreignObject> + <text x="1120" y="172" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Planning (Sub) Components + </text> + </switch> + </g> + <rect x="1030" y="197.1" width="180" height="27.95" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 204px; margin-left: 1031px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Planning Modules + </div> + </div> + </div> + </foreignObject> + <text x="1120" y="216" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Planning Modules + </text> + </switch> + </g> + <rect x="1030" y="243.05" width="180" height="27.95" fill="#f5f5f5" stroke="#000000" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 250px; margin-left: 1031px;"> + <div data-drawio-colors="color: #000000; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Other Components + </div> + </div> + </div> + </foreignObject> + <text x="1120" y="262" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Other Components + </text> + </switch> + </g> + </g> + <switch> + <g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/> + <a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"> + <text text-anchor="middle" font-size="10px" x="50%" y="100%"> + Text is not SVG - cannot display + </text> + </a> + </switch> +</svg> \ No newline at end of file diff --git a/docs/design/autoware-architecture/planning/index.md b/docs/design/autoware-architecture/planning/index.md index 638e22bc9ea..c9fd2fe00b1 100644 --- a/docs/design/autoware-architecture/planning/index.md +++ b/docs/design/autoware-architecture/planning/index.md @@ -1,5 +1,18 @@ # Planning component design +- discussionsはトレードオフ選定とかにしたい +- サードパーティによって拡張というよりは、誰でも拡張できるって言い回しのほうが良いはず +- mission plannerの使われ方を重点的に考えよう。FMSとして機能が外だしされることがあるから、これは別れてるのよ。 +- ハイレベルなデザインと詳細なデザインではなく、アーキテクチャのためのデザイン(要求ベース、これがやりたい)と、アーキテクチャ(詳細なフロー)ができるはず。 +- デザインの部分に、ポリシーによる変更がわかるような書き方があると良い。ポリシーA(右側走行)になったときに、いくつかのモジュールが特定の設定で起動する。どう図にするか。。。 +- このポリシーに対して、何がどうかわるかという例があるといい。自動運転レベルが変わったときに、HMIとの連携がこう変わって、軌道モジュールがこう変わる、とか。 +- ハイレベルに対するユースケースを上げる +- 車両の振る舞いのユースケース + - 話ゴールやチェくポイント、NGポイントを与えてplanning内部でルートを計算して進む / 渋滞情報を加味したルートを外部から与えて走行する +開発者のユースケース + - 中の作りの話(実装や設計レベル):機能の差し替えができていてほしいので(レーンチェンジAとレーンチェンジBとか)、柔軟に変更できる必要があり、各機能はモジュールとして実装される。 + + ## Purpose of this document This document outlines the high-level design strategies, goals and related rationales in the development of the Planning Component. Through this document, it is expected that all OSS developers will comprehend the design philosophy, goals and constraints under which the Planning Component is designed, and participate seamlessly in the development. @@ -69,6 +82,7 @@ WIP This diagram describes the high-level architecture of the Planning Component.  + The Planning component consists of the following sub-components: @@ -94,7 +108,7 @@ Following the microautonomy architecture, we adopt a modular system framework wh ここでは microautonomy アーキテクチャに従い、モジュール型のシステムフレームワークを採用しています。planningの機能はモジュールとして実装され、これらのモジュールは与えられたユースケースに応じて動的にロードおよびアンロードされます。例えば、behavior planning のサブコンポーネントには、レーンチェンジ、交差点、横断歩道モジュールなどのモジュールが含まれています。 -### Discussions +### Discussions -> わからん。trade-off選定とかにしよう。 The following provides discussion points on trade-offs in the architecture. From this information, you can see the current design limitation, challenges, and potential improvement. From 94ba23c84be392de6e4a0494cdfa735c755b1672 Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Sun, 19 Nov 2023 16:11:56 +0900 Subject: [PATCH 13/19] Update Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- ...lanning-diagram-miyake-reviewed.drawio.svg | 573 ++++--- .../image/how-to-add-new-modules.drawio.svg | 1370 +++++++++------ .../image/planning-diagram.drawio-tmp.svg | 1514 +++++++++++++++++ .../planning/index-update.md | 330 ++++ 4 files changed, 3085 insertions(+), 702 deletions(-) create mode 100644 docs/design/autoware-architecture/planning/image/planning-diagram.drawio-tmp.svg create mode 100644 docs/design/autoware-architecture/planning/index-update.md diff --git a/docs/design/autoware-architecture/planning/image/high-level-planning-diagram-miyake-reviewed.drawio.svg b/docs/design/autoware-architecture/planning/image/high-level-planning-diagram-miyake-reviewed.drawio.svg index e8541faf07e..cbf19c12b49 100644 --- a/docs/design/autoware-architecture/planning/image/high-level-planning-diagram-miyake-reviewed.drawio.svg +++ b/docs/design/autoware-architecture/planning/image/high-level-planning-diagram-miyake-reviewed.drawio.svg @@ -1,4 +1,4 @@ -<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1251px" height="836px" viewBox="-0.5 -0.5 1251 836" content="<mxfile><diagram id="8qt1-HtFgWOiWtJ-FPd8" name="planning (v0.13.0)">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</diagram></mxfile>"> +<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1251px" height="754px" viewBox="-0.5 -0.5 1251 754" content="<mxfile><diagram id="8qt1-HtFgWOiWtJ-FPd8" name="planning (v0.13.0)">7V1bd6M4Ev41OWf3oTm6Xx4Tp3tm9iTTOZvZnulHghWbCbGyGOfSv34kDDYgHBOMY+LG/dBGIBGqvipVfSXhEzy6f/4l9h+ml3qsohMExs8n+PwEIUgxMP/ZlpeshUG8bJnE4ThrWzdchz9U1ph1nCzCsZqXLky0jpLwodwY6NlMBUmpzY9j/VS+7FZH5bs++BPlNFwHfuS2/hmOk+myVSC+bv9VhZNpfmfI5PLMvZ9fnD3JfOqP9VOhCX8+waNY62T57f55pCIrvVwuAdPoz+uz3+eT779r/Z+rb5d/8U/Lwb68pcvqEWI1S1oPjWX2YI9+tMiEc4JYZEY8u4nNt4n9dqEmajbOHjh5yaUY68VsrOxIwFz0NA0Tdf3gB/bskwGOaZsm95E5gubro4qT0GjgNAonM9OWaHtBdnNzTj1XVLPlueBK2AamSt+rJH4x/fJRQI7RDKLm4wG6bHpaqxyx7LJpUd0ya/QzmE1W469Fab5k0qyXLAHAkezp1W+m4cJ/UfErwoTbhRn5Nyo684O7SdptpCMdm1MzPVM1or4Px2N7mzM/DjJbtApbQdeOeBtGUT7MCcIq/diLkljfqcIZzLDE4z2qDoGy5mBuagW1cV6jNtqJ1qCjGTU2viM7zCRcRv78TiXBNDvQcTLVEz3zowttIZ5K92+VJC+Z6P1FosvaVM9h8pft7nGaHX7PRrPfz5+LBy/5wcw8WrGXPf6ej2gP1v3So5eq2sFWIC2Vn3tIZGGiZ0kBDGBs/6VX+nFyaj1zsbdp+xJaWWd/xji/4ibSwd2yKbsA5h0yKcGsR/FwrhdxoK5UHBq9qtiaRzibmLPEnDR9JyrZcHKpU6vIFkg1YEhvnCEkn+qWNywZu4vpWEV+Ej6Wb7sbQJHjVkZGKbG2V430/YMRvnmmwb00dC/ifd0LftW9rJ3H53Vrx95mJ/v/qDa8g2VmXa90aM0qhxEmlVmKV+CRPeiyVzEC2zLQKrLMB8qEUh0ohdrqeRqijzi+4yryZzMrZAT+db24+XfRicz3EfFtQVwRnPsLDnlF5hx70PECUNR4AcQ9SbtwBPQ1VZiUaxGpQ8u/4rRv/ECMcZ3TNiAmdJ9O29EYhvzdNcYcjX1NpjaS74/FVDR2S+2/mrAt/dRpcnXm/TTJcF1itl9VckeVjuKssB82SiEjJvyb/HLQiXScuaA2aZW4LjxhXQlHbAFxV+lO/j3Ndbw889mQ7ZiDVVxwUs2AiukP8ABmW1Kg9Kg63BHHRRngOw+CIKvglXmEEUIk4BIISGSjSMYZVrijUgAQY4QLasbnjSKt7QHS/+Yq/nrztyUYEUg1nvuCJQE2Dh9LdsD+v7C03plxBsknf+mjT21XdZusz65IM208efjDyFfP8hHNH5AOuryim/sUcr76mxTY1aKvWxu8LGg48wZtM8dA34dB1aCgkxu+bl57ShY3WkE+EyHiAUgBtZQT4AgSx/PWTUoQUo9jSqlEEENAiHizEzaHBSy+ik3jBAL1UMTUmqatZP+v6RyCQedLqtfoHFMIGRaCmKgSH1Dn7lwMXTay47l4wxxqCx4HnEOza9ZTKNjrFLqKSDwA8uOlHIxTeDUuKfGe+cxfJD7zIKcqqQPO2gJ4GIHVB7LSbAsB8JgUAktEjRMkojKJN+U1qrGBHZdgIiFnDAGCaCVW7ZDmgC5F+uvi3q/xmJd+MA0N1JwTv82Mqm6tx/s5iNRtfpIRTxJq/kEhoZQCvZebrNEu3p68vV/WDXeW8AZ7oR5ggEEJMcBYcMSx+lQTkdRT1V3lgtAlDFe2srKhcD5PwxGwJrBWgehNOQz92CpaZfmZigjzkJudM1qjEYZtla4Dhbi0oaMQ15ttbjl2FUFiLIGYqczE9YJjIXkzfSFOPSkIlxQQxjDmpAvlMUfENbXlYBE/ruaXsgp2CvC8UpV4HdBtCu8cQmOP8VeJKlmXw4vV8PxMfRz2Bo7UDTybx2LVUnCGilIpeGmi71EKhnU0ZsUZnKmp/xjquGcGX0s+y/RjCRF/Pl2ZQDd+oRqNMulhSAVkSDBKkBCOX6C1S4MA8wRGApl0UQIoKepCj6LBLKsrPNKgRXMspYck5RQBKKDAbvK+QYnGtXBiciBJGRScdxKWvrKQLlfVNz8Kx1VCsA+K3GOIZCNRQkw/wYQRd8NwiXuMmS6CMAwIZbIDBeV/2WsKKpRg62jVzaqyVG1ZHxlvex6oWZr1b872YjUPf2SVJKvoB5sDp09Kz07ouR3LTOvzbKY9RGpSIeQh9CiSJodHhDAJAHOzQUhqtJqXrd6gxrYUvUuTX7/ME3XfjojfA+mOioXAPhCwDl4PxDQQijwDn1c8xiEJ2VyPBSdyadSxjYr/efmjLXqj2DNpEYFQEkKB5OzdPIRdEvFp6VRtbQ3Ch+daS7/wLT8IRlN/NlGtrR333tqNOPJkrgYnXa392TbV4MrqTASERyExdi2hICbmdhkwCOr8wdsjhjcU4brCVsoyz83wr5SIt0KLDNBqBC2C5E8ErVGs5/MnP7prjSs64KoRrigVR4ArF0EqCTzPaw0f1nv4HAYuTPAyXLDwuMCCAYAAXnER/UZLUy90ZbdL1haG3gYm3nsw9cMXVcMnjE0yxRAVQJpbMSnc8scHRtc3FekgTF66QJgYENYqijpuhH29mSd+ENkE8NoSqm3R1bcVln1Fl+O/GPaIfeOACac4ZRx90Fjq8iL3UXa/SDsQ4b4t2exLRFUNwA8LGpczxHtfxDlsqDg5zg0VkDCPUYg5ldRAWhBcHrHljop0WMwkxdS6XFxZ3NJ6Q0UN9tGA/QH7rbCf1gYEsatNDYyIgM0WDG/dTWSHZZJzTiACCOeLhfcBfnez/wD+AfxNwI8F8ijHIl0qTwSA3Tj+dFgqCZYMQhM4wf1hn+wb+8POlaIHGHauIArNUyPCGIFUMIwBa4TurbZIgfQkA5wgyqSkgJFGtri//adN2Yv/6kWiOiDH8FAK2oLrDfQFF8YsLf3DKCfSZKJuIppvIOgPe9EUXaePOhz7s6D1ogjc/xJRP2F13CWjRQqEr487MGVDuagZsJwlEccMrPM4fExX2SJwGiu/NbiGSlEzcDm07FFXiq4jozwEzvVT65VceKgStXNbH7NK1BhZaeERXBT2qb8VWaT/paN+IMtZnPMh13I1X50T3+2QFpL+b2HoB6qcFYLHHGZ9iZWap3puCys0wKqVs/qYAVbXC09J/7da9AQuPVsmQbZVDHZ6s37zVwkcsAC101sM2r7pYSn1Nm8/yKjL8tsPZD0Id2T+aY6OfJegZB5HAkJu/jaMQMvymDMskybeQ8YiqDEMmf8ezMHeNNl00v1F+9aWdiX6yUD0N/OlRJRxc9RE/47z8cDyN5yf8230PwOmjBSjMHtt2Giqgtbb1MjA9TeDV7WIRIHJFrAQnFAoJWEfIlloCq8//hjtDKyB5284F1bY2KMG1o5z4cDwN5wLK7nqUWNqpGe3Jrf1b8Io3czWDlt04PibYavKxh4UWy4NQt3dIm/9hbCBKDkUUdL8RwQz9JR/RBDVA3dX7qQS+UkAPFD47O9F3PnbEQ/4a3dtlX3Ea9gbgzTHTZngIzuCdLNzXP9q8hJs6x+fxp//AQ==</diagram></mxfile>"> <defs/> <g> <rect x="990" y="102.05" width="260" height="190" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> @@ -19,15 +19,107 @@ </text> </switch> </g> - <path d="M 80 131.76 L 145.76 131.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 157.76 131.78 L 145.76 137.77 L 145.77 125.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="0" y="466" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="160" y="0" width="770" height="50" fill="#000000" stroke="#000000" pointer-events="all" transform="translate(2,3)" opacity="0.25"/> + <rect x="160" y="0" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 25px; margin-left: 161px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + API Layer + </div> + </div> + </div> + </foreignObject> + <text x="545" y="29" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + API Layer + </text> + </switch> + </g> + <path d="M 737.5 102.05 L 737.5 64.24" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 737.5 52.24 L 743.5 64.24 L 731.5 64.24 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="160" y="700" width="770" height="50" fill="#000000" stroke="#000000" pointer-events="all" transform="translate(2,3)" opacity="0.25"/> + <rect x="160" y="700" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 725px; margin-left: 161px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Control Component + </div> + </div> + </div> + </foreignObject> + <text x="545" y="729" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Control Component + </text> + </switch> + </g> + <path d="M 300 50 L 300 85.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 300 97.76 L 294 85.76 L 306 85.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="1030" y="153.1" width="180" height="27.95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 160px; margin-left: 1031px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Planning (Sub) Components + </div> + </div> + </div> + </foreignObject> + <text x="1120" y="172" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Planning (Sub) Components + </text> + </switch> + </g> + <rect x="1030" y="197.1" width="180" height="27.95" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 531px; margin-left: 1px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 204px; margin-left: 1031px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Planning Modules + </div> + </div> + </div> + </foreignObject> + <text x="1120" y="216" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Planning Modules + </text> + </switch> + </g> + <rect x="1030" y="243.05" width="180" height="27.95" fill="#f5f5f5" stroke="#000000" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 250px; margin-left: 1031px;"> + <div data-drawio-colors="color: #000000; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Other Components + </div> + </div> + </div> + </foreignObject> + <text x="1120" y="262" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Other Components + </text> + </switch> + </g> + <path d="M 80 128.5 L 145.76 128.51" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 157.76 128.51 L 145.76 134.51 L 145.77 122.51 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="0" y="426.07" width="80" height="115.74" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="0" y="426.07" width="80" height="115.74" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 484px; margin-left: 1px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="text-align: left"> Localization </div> @@ -38,18 +130,19 @@ </div> </div> </foreignObject> - <text x="40" y="535" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="40" y="488" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Localization... </text> </switch> </g> - <rect x="0" y="320" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="0" y="296.09" width="80" height="115.74" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="0" y="296.09" width="80" height="115.74" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 385px; margin-left: 1px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 354px; margin-left: 1px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> Perception <br/> Component @@ -57,20 +150,21 @@ </div> </div> </foreignObject> - <text x="40" y="389" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="40" y="358" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Perception... </text> </switch> </g> - <path d="M 94.56 215.11 L 160 214.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 82.56 215.15 L 94.53 209.11 L 94.58 221.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="0" y="175" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <path d="M 94.56 202.7 L 160 202.48" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 82.56 202.74 L 94.54 196.7 L 94.58 208.7 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="0" y="167" width="80" height="115.74" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="0" y="167" width="80" height="115.74" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 240px; margin-left: 1px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 225px; margin-left: 1px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> Human <br/> Machine @@ -80,40 +174,21 @@ </div> </div> </foreignObject> - <text x="40" y="244" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="40" y="228" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Human... </text> </switch> </g> - <rect x="160" y="0" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="160" y="102.05" width="770" height="567.95" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="160" y="102.05" width="770" height="567.95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/> + <rect x="220" y="148.3" width="650" height="63.75" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="220" y="148.3" width="650" height="63.75" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 25px; margin-left: 161px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 155px; margin-left: 221px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - API Layer - </div> - </div> - </div> - </foreignObject> - <text x="545" y="29" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - API Layer - </text> - </switch> - </g> - <path d="M 737.5 102.05 L 737.5 64.24" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 737.5 52.24 L 743.5 64.24 L 731.5 64.24 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="160" y="102.05" width="770" height="637.95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> - <path d="M 545 210 Q 545 210 545 225.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 545 237.76 L 539 225.76 L 551 225.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="220" y="154" width="650" height="56" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> - <g transform="translate(-0.5 -0.5)"> - <switch> - <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 182px; margin-left: 221px;"> - <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <b> Mission Planning </b> @@ -121,18 +196,19 @@ </div> </div> </foreignObject> - <text x="545" y="186" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="545" y="167" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Mission Planning </text> </switch> </g> - <rect x="220" y="240" width="650" height="390" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="220" y="250" width="650" height="275.98" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="220" y="250" width="650" height="275.98" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 247px; margin-left: 221px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 257px; margin-left: 221px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <b> <br/> <br/> @@ -141,18 +217,20 @@ </div> </div> </foreignObject> - <text x="545" y="259" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="545" y="269" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> ... </text> </switch> </g> - <rect x="260" y="280" width="560" height="140" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <path d="M 545 212.05 Q 545 212.05 545 235.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 545 247.76 L 539 235.76 L 551 235.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="260" y="271.37" width="560" height="106.83" fill="rgb(255, 255, 255)" stroke="#999999" stroke-dasharray="3 3" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 558px; height: 1px; padding-top: 287px; margin-left: 261px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 558px; height: 1px; padding-top: 278px; margin-left: 261px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <b> Behavior </b> @@ -160,18 +238,18 @@ </div> </div> </foreignObject> - <text x="540" y="299" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="540" y="290" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Behavior </text> </switch> </g> - <rect x="260" y="466" width="560" height="112.97" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="260" y="401.35" width="560" height="100.57" fill="rgb(255, 255, 255)" stroke="#999999" stroke-dasharray="3 3" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 558px; height: 1px; padding-top: 473px; margin-left: 261px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 558px; height: 1px; padding-top: 408px; margin-left: 261px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <b> Motion </b> @@ -179,20 +257,19 @@ </div> </div> </foreignObject> - <text x="540" y="485" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="540" y="420" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Motion </text> </switch> </g> - <path d="M 545 716 L 545 769.81" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 545 781.81 L 539 769.81 L 551 769.81 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="220" y="660" width="650" height="56" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="220" y="570" width="650" height="67.66" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="220" y="570" width="650" height="67.66" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 688px; margin-left: 221px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 577px; margin-left: 221px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <b> Validation </b> @@ -200,36 +277,18 @@ </div> </div> </foreignObject> - <text x="545" y="692" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="545" y="589" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Validation </text> </switch> </g> - <rect x="160" y="784.05" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> - <g transform="translate(-0.5 -0.5)"> - <switch> - <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 809px; margin-left: 161px;"> - <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - Control Component - </div> - </div> - </div> - </foreignObject> - <text x="545" y="813" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Control Component - </text> - </switch> - </g> - <rect x="180" y="115" width="140" height="30" fill="none" stroke="none" pointer-events="all" transform="translate(2,3)" opacity="0.25"/> - <rect x="180" y="115" width="140" height="30" fill="none" stroke="none" pointer-events="all"/> + <rect x="180" y="113.58" width="140" height="30" fill="none" stroke="none" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 130px; margin-left: 250px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 129px; margin-left: 250px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: nowrap;"> <b> Planning Component </b> @@ -237,20 +296,19 @@ </div> </div> </foreignObject> - <text x="250" y="134" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="250" y="132" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Planning Component </text> </switch> </g> - <path d="M 545 54 L 545 139.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 545 151.76 L 539 139.76 L 551 139.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="0" y="610" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="0" y="554.26" width="80" height="115.74" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="0" y="554.26" width="80" height="115.74" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 675px; margin-left: 1px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 612px; margin-left: 1px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style=""> System </div> @@ -261,20 +319,19 @@ </div> </div> </foreignObject> - <text x="40" y="679" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="40" y="616" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> System... </text> </switch> </g> - <path d="M 300 50 L 300 85.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 300 97.76 L 294 85.76 L 306 85.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="0" y="102.05" width="80" height="60" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="0" y="102.05" width="80" height="53.42" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="0" y="102.05" width="80" height="53.42" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 132px; margin-left: 1px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 129px; margin-left: 1px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> Map <br/> Component @@ -282,18 +339,19 @@ </div> </div> </foreignObject> - <text x="40" y="136" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="40" y="132" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Map... </text> </switch> </g> - <rect x="378" y="333.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="300" y="310.56" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="300" y="310.56" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 343px; margin-left: 379px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 320px; margin-left: 301px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> Lane Change </div> @@ -301,18 +359,19 @@ </div> </div> </foreignObject> - <text x="423" y="346" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="350" y="323" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Lane Change </text> </switch> </g> - <rect x="493" y="333.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="429" y="310.56" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="429" y="310.56" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 343px; margin-left: 494px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 320px; margin-left: 430px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> Intersection </div> @@ -320,18 +379,19 @@ </div> </div> </foreignObject> - <text x="538" y="346" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="479" y="323" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Intersection </text> </switch> </g> - <rect x="605" y="333.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="558" y="310.56" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="558" y="310.56" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 343px; margin-left: 606px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 320px; margin-left: 559px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> Crosswalk </div> @@ -339,18 +399,19 @@ </div> </div> </foreignObject> - <text x="650" y="346" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="608" y="323" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Crosswalk </text> </switch> </g> - <rect x="605" y="363.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="687" y="340.83" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="687" y="340.83" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 373px; margin-left: 606px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 350px; margin-left: 688px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style=""> etc... </div> @@ -358,102 +419,107 @@ </div> </div> </foreignObject> - <text x="650" y="376" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="737" y="354" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> etc... </text> </switch> </g> - <rect x="378" y="503.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="300" y="434.31" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="300" y="434.31" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 513px; margin-left: 379px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 444px; margin-left: 301px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - Path Smooth + Path Planning </div> </div> </div> </div> </foreignObject> - <text x="423" y="516" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Path Smooth + <text x="350" y="447" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Path Planning </text> </switch> </g> - <rect x="493" y="503.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="429" y="434.31" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="429" y="434.31" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 513px; margin-left: 494px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 444px; margin-left: 430px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - Velocity Smooth + Velocity Planning </div> </div> </div> </div> </foreignObject> - <text x="538" y="516" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Velocity Smooth + <text x="479" y="447" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Velocity Planning </text> </switch> </g> - <rect x="378" y="534.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="300" y="465.47" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="300" y="465.47" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 544px; margin-left: 379px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 475px; margin-left: 301px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - Collision Check + Obstacle Stop </div> </div> </div> </div> </foreignObject> - <text x="423" y="547" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Collision Check + <text x="350" y="478" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Obstacle Stop </text> </switch> </g> - <rect x="605" y="534.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="558" y="465.47" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="558" y="465.47" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 544px; margin-left: 606px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 475px; margin-left: 559px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style=""> - etc... + ML Planner </div> </div> </div> </div> </foreignObject> - <text x="650" y="547" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - etc... + <text x="608" y="479" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + ML Planner </text> </switch> </g> - <path d="M 80 266.76 L 145.76 266.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 157.76 266.78 L 145.76 272.77 L 145.77 260.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 80 386.76 L 145.76 386.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 157.76 386.78 L 145.76 392.77 L 145.77 380.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 80 531.76 L 145.76 531.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 157.76 531.78 L 145.76 537.77 L 145.77 525.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 94.56 675.11 L 160 674.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 82.56 675.15 L 94.53 669.11 L 94.58 681.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="672" y="175" width="122" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <path d="M 80 248.69 L 145.76 248.7" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 157.76 248.7 L 145.76 254.7 L 145.77 242.7 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 80 355.52 L 145.76 355.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 157.76 355.53 L 145.76 361.53 L 145.77 349.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 80 484.61 L 145.76 484.62" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 157.76 484.62 L 145.76 490.62 L 145.77 478.62 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 94.56 612.23 L 160 612.01" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 82.56 612.27 L 94.54 606.23 L 94.58 618.23 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="300" y="180.05" width="125" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="300" y="180.05" width="125" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 120px; height: 1px; padding-top: 184px; margin-left: 673px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 123px; height: 1px; padding-top: 190px; margin-left: 301px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> Route Planning </div> @@ -461,18 +527,19 @@ </div> </div> </foreignObject> - <text x="733" y="188" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="363" y="193" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Route Planning </text> </switch> </g> - <rect x="378" y="363.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="300" y="340.83" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="300" y="340.83" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 373px; margin-left: 379px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 350px; margin-left: 301px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> Avoidance </div> @@ -480,18 +547,19 @@ </div> </div> </foreignObject> - <text x="423" y="376" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="350" y="354" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Avoidance </text> </switch> </g> - <rect x="493" y="363.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="429" y="340.83" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="429" y="340.83" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 373px; margin-left: 494px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 350px; margin-left: 430px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> Pull Over </div> @@ -499,18 +567,19 @@ </div> </div> </foreignObject> - <text x="538" y="376" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="479" y="354" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Pull Over </text> </switch> </g> - <rect x="605" y="503.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="558" y="434.31" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="558" y="434.31" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 513px; margin-left: 606px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 444px; margin-left: 559px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> Drivable Area </div> @@ -518,18 +587,19 @@ </div> </div> </foreignObject> - <text x="650" y="516" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="608" y="447" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Drivable Area </text> </switch> </g> - <rect x="493" y="534.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="429" y="465.47" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="429" y="465.47" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 544px; margin-left: 494px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 475px; margin-left: 430px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> Slow Down </div> @@ -537,100 +607,217 @@ </div> </div> </foreignObject> - <text x="538" y="547" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="479" y="478" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Slow Down </text> </switch> </g> - <rect x="633" y="678.51" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="687" y="310.56" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="687" y="310.56" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 688px; margin-left: 634px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 320px; margin-left: 688px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - TTC Check + Stop Line </div> </div> </div> </div> </foreignObject> - <text x="678" y="691" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - TTC Check + <text x="737" y="323" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Stop Line </text> </switch> </g> - <rect x="743" y="678.51" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="558" y="340.83" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="558" y="340.83" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 688px; margin-left: 744px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 350px; margin-left: 559px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - ACC Check + Parking </div> </div> </div> </div> </foreignObject> - <text x="788" y="691" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - ACC Check + <text x="608" y="354" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Parking </text> </switch> </g> - <rect x="1030" y="153.1" width="180" height="27.95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="687" y="434.31" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="687" y="434.31" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 160px; margin-left: 1031px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 444px; margin-left: 688px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - Planning (Sub) Components + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Freespace + </div> </div> </div> </div> </foreignObject> - <text x="1120" y="172" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Planning (Sub) Components + <text x="737" y="447" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Freespace </text> </switch> </g> - <rect x="1030" y="197.1" width="180" height="27.95" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="687" y="465.47" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="687" y="465.47" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 204px; margin-left: 1031px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 475px; margin-left: 688px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - Planning Modules + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style=""> + etc... + </div> </div> </div> </div> </foreignObject> - <text x="1120" y="216" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Planning Modules + <text x="737" y="479" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + etc... </text> </switch> </g> - <rect x="1030" y="243.05" width="180" height="27.95" fill="#f5f5f5" stroke="#000000" pointer-events="all"/> + <path d="M 545 525.98 L 545 555.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 545 567.77 L 539 555.77 L 551 555.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="484" y="180.05" width="125" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="484" y="180.05" width="125" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 250px; margin-left: 1031px;"> - <div data-drawio-colors="color: #000000; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - Other Components + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 123px; height: 1px; padding-top: 190px; margin-left: 485px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Goal Planning + </div> </div> </div> </div> </foreignObject> - <text x="1120" y="262" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Other Components + <text x="547" y="193" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Goal Planning + </text> + </switch> + </g> + <rect x="662" y="180.05" width="125" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="662" y="180.05" width="125" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 123px; height: 1px; padding-top: 190px; margin-left: 663px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + etc... + </div> + </div> + </div> + </div> + </foreignObject> + <text x="725" y="193" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + etc... + </text> + </switch> + </g> + <rect x="300" y="604.29" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="300" y="604.29" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 614px; margin-left: 301px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Collision Check + </div> + </div> + </div> + </div> + </foreignObject> + <text x="350" y="617" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Collision Check + </text> + </switch> + </g> + <rect x="429" y="604.29" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="429" y="604.29" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 614px; margin-left: 430px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + TTC Check + </div> + </div> + </div> + </div> + </foreignObject> + <text x="479" y="617" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + TTC Check + </text> + </switch> + </g> + <rect x="687" y="604.29" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="687" y="604.29" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 614px; margin-left: 688px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + etc... + </div> + </div> + </div> + </div> + </foreignObject> + <text x="737" y="617" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + etc... + </text> + </switch> + </g> + <rect x="558" y="604.29" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="558" y="604.29" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 614px; margin-left: 559px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Confortability + </div> + </div> + </div> + </div> + </foreignObject> + <text x="608" y="617" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Confortability </text> </switch> </g> + <path d="M 545 637.67 L 545 685.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 545 697.76 L 539 685.76 L 551 685.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 545 54 L 545 134.06" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 545 146.06 L 539 134.06 L 551 134.06 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> </g> <switch> <g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/> diff --git a/docs/design/autoware-architecture/planning/image/how-to-add-new-modules.drawio.svg b/docs/design/autoware-architecture/planning/image/how-to-add-new-modules.drawio.svg index ca3f9ab856c..255e7a3cef1 100644 --- a/docs/design/autoware-architecture/planning/image/how-to-add-new-modules.drawio.svg +++ b/docs/design/autoware-architecture/planning/image/how-to-add-new-modules.drawio.svg @@ -1,15 +1,110 @@ -<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="3362px" height="950px" viewBox="-0.5 -0.5 3362 950" content="<mxfile><diagram id="8qt1-HtFgWOiWtJ-FPd8" name="planning (v0.13.0)">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</diagram></mxfile>"> +<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="3304px" height="871px" viewBox="-0.5 -0.5 3304 871" content="<mxfile><diagram id="8qt1-HtFgWOiWtJ-FPd8" name="planning (v0.13.0)">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</diagram></mxfile>"> <defs/> <g> - <path d="M 80 246.76 L 145.76 246.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 157.76 246.78 L 145.76 252.77 L 145.77 240.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="0" y="581" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="2550" y="13" width="700" height="30" fill="none" stroke="none" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 646px; margin-left: 1px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 698px; height: 1px; padding-top: 28px; margin-left: 2551px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 25px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Replace the entier planning component + </div> + </div> + </div> + </foreignObject> + <text x="2900" y="36" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="25px" text-anchor="middle"> + Replace the entier planning component + </text> + </switch> + </g> + <rect x="1430" y="15" width="700" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 698px; height: 1px; padding-top: 30px; margin-left: 1431px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 25px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Replace the planning sub-component, + <br/> + or add a new scenario component + </div> + </div> + </div> + </foreignObject> + <text x="1780" y="38" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="25px" text-anchor="middle"> + Replace the planning sub-component,... + </text> + </switch> + </g> + <rect x="170" y="15" width="700" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 698px; height: 1px; padding-top: 30px; margin-left: 171px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 25px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Add or replace with new planning modules + </div> + </div> + </div> + </foreignObject> + <text x="520" y="38" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="25px" text-anchor="middle"> + Add or replace with new planning modules + </text> + </switch> + </g> + <rect x="2530" y="113" width="770" height="50" fill="#000000" stroke="#000000" pointer-events="all" transform="translate(2,3)" opacity="0.25"/> + <rect x="2530" y="113" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 138px; margin-left: 2531px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + API Layer + </div> + </div> + </div> + </foreignObject> + <text x="2915" y="142" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + API Layer + </text> + </switch> + </g> + <path d="M 3107.5 215.05 L 3107.5 177.24" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 3107.5 165.24 L 3113.5 177.24 L 3101.5 177.24 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="2530" y="813" width="770" height="50" fill="#000000" stroke="#000000" pointer-events="all" transform="translate(2,3)" opacity="0.25"/> + <rect x="2530" y="813" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 838px; margin-left: 2531px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Control Component + </div> + </div> + </div> + </foreignObject> + <text x="2915" y="842" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Control Component + </text> + </switch> + </g> + <path d="M 2670 163 L 2670 198.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 2670 210.76 L 2664 198.76 L 2676 198.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="2370" y="215.05" width="930" height="637.95" fill="none" stroke="none" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <path d="M 2450 241.5 L 2515.76 241.51" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 2527.76 241.51 L 2515.76 247.51 L 2515.77 235.51 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="2370" y="539.07" width="80" height="115.74" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="2370" y="539.07" width="80" height="115.74" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 597px; margin-left: 2371px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="text-align: left"> Localization </div> @@ -20,18 +115,19 @@ </div> </div> </foreignObject> - <text x="40" y="650" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="2410" y="601" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Localization... </text> </switch> </g> - <rect x="0" y="435" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="2370" y="409.09" width="80" height="115.74" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="2370" y="409.09" width="80" height="115.74" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 500px; margin-left: 1px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 467px; margin-left: 2371px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> Perception <br/> Component @@ -39,20 +135,21 @@ </div> </div> </foreignObject> - <text x="40" y="504" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="2410" y="471" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Perception... </text> </switch> </g> - <path d="M 94.56 330.11 L 160 329.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 82.56 330.15 L 94.53 324.11 L 94.58 336.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="0" y="290" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <path d="M 2464.56 315.7 L 2530 315.48" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 2452.56 315.74 L 2464.54 309.7 L 2464.58 321.7 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="2370" y="280" width="80" height="115.74" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="2370" y="280" width="80" height="115.74" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 355px; margin-left: 1px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 338px; margin-left: 2371px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> Human <br/> Machine @@ -62,130 +159,158 @@ </div> </div> </foreignObject> - <text x="40" y="359" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="2410" y="341" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Human... </text> </switch> </g> - <rect x="160" y="115" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="2530" y="215.05" width="770" height="567.95" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="2530" y="215.05" width="770" height="567.95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/> + <rect x="2550" y="226.58" width="140" height="30" fill="none" stroke="none" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 140px; margin-left: 161px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 242px; margin-left: 2620px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - API Layer + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: nowrap;"> + <b> + Planning Component + </b> </div> </div> </div> </foreignObject> - <text x="545" y="144" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - API Layer + <text x="2620" y="245" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Planning Component </text> </switch> </g> - <path d="M 737.5 217.05 L 737.5 179.24" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 737.5 167.24 L 743.5 179.24 L 731.5 179.24 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="160" y="217.05" width="770" height="637.95" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/> + <rect x="2370" y="667.26" width="80" height="115.74" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="2370" y="667.26" width="80" height="115.74" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 536px; margin-left: 161px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 725px; margin-left: 2371px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <b style="font-size: 15px;"> - Third-party Planning Component - </b> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style=""> + System + </div> + <div style=""> + Component + </div> </div> </div> </div> </foreignObject> - <text x="545" y="541" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="15px" text-anchor="middle"> - Third-party Planning Component + <text x="2410" y="729" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + System... </text> </switch> </g> - <path d="M 545 855 L 545 884.81" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 545 896.81 L 539 884.81 L 551 884.81 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="160" y="899.05" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="2370" y="215.05" width="80" height="53.42" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="2370" y="215.05" width="80" height="53.42" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 924px; margin-left: 161px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 242px; margin-left: 2371px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - Control Component + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + Map + <br/> + Component </div> </div> </div> </foreignObject> - <text x="545" y="928" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Control Component + <text x="2410" y="245" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Map... </text> </switch> </g> - <path d="M 545 169 L 545 200.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 545 212.76 L 539 200.76 L 551 200.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="0" y="725" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <path d="M 2450 361.69 L 2515.76 361.7" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 2527.76 361.7 L 2515.76 367.7 L 2515.77 355.7 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 2450 468.52 L 2515.76 468.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 2527.76 468.53 L 2515.76 474.53 L 2515.77 462.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 2450 597.61 L 2515.76 597.62" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 2527.76 597.62 L 2515.76 603.62 L 2515.77 591.62 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 2464.56 725.23 L 2530 725.01" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 2452.56 725.27 L 2464.54 719.23 L 2464.58 731.23 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="2530" y="215.05" width="770" height="570" fill="#ffe6cc" stroke="#d79b00" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 790px; margin-left: 1px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 500px; margin-left: 2531px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <div style=""> - System - </div> - <div style=""> - Component - </div> + <div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <b style=""> + <font style="font-size: 20px;"> + Third-party Planning Component + </font> + </b> </div> </div> </div> </foreignObject> - <text x="40" y="794" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - System... + <text x="2915" y="505" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="15px" text-anchor="middle"> + Third-party Planning Component </text> </switch> </g> - <path d="M 300 165 L 300 200.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 300 212.76 L 294 200.76 L 306 200.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="0" y="217.05" width="80" height="60" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <path d="M 2915 750.67 L 2915 798.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 2915 810.76 L 2909 798.76 L 2921 798.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 2915 167 L 2915 247.06" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 2915 259.06 L 2909 247.06 L 2921 247.06 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="1410" y="115" width="770" height="50" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1410" y="115" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 247px; margin-left: 1px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 140px; margin-left: 1411px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - Map - <br/> - Component + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + API Layer </div> </div> </div> </foreignObject> - <text x="40" y="251" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Map... + <text x="1795" y="144" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + API Layer </text> </switch> </g> - <path d="M 80 381.76 L 145.76 381.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 157.76 381.78 L 145.76 387.77 L 145.77 375.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 80 501.76 L 145.76 501.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 157.76 501.78 L 145.76 507.77 L 145.77 495.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 80 646.76 L 145.76 646.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 157.76 646.78 L 145.76 652.77 L 145.77 640.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 94.56 790.11 L 160 789.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 82.56 790.15 L 94.53 784.11 L 94.58 796.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 1290 246.76 L 1355.76 246.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 1367.76 246.78 L 1355.76 252.77 L 1355.77 240.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="1210" y="581" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <path d="M 1987.5 217.05 L 1987.5 179.24" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 1987.5 167.24 L 1993.5 179.24 L 1981.5 179.24 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="1410" y="815" width="770" height="50" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1410" y="815" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 646px; margin-left: 1211px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 840px; margin-left: 1411px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + Control Component + </div> + </div> + </div> + </foreignObject> + <text x="1795" y="844" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Control Component + </text> + </switch> + </g> + <path d="M 1550 165 L 1550 200.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 1550 212.76 L 1544 200.76 L 1556 200.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 1330 243.5 L 1395.76 243.51" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 1407.76 243.51 L 1395.76 249.51 L 1395.77 237.51 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="1250" y="541.07" width="80" height="115.74" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1250" y="541.07" width="80" height="115.74" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 599px; margin-left: 1251px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="text-align: left"> Localization </div> @@ -196,18 +321,19 @@ </div> </div> </foreignObject> - <text x="1250" y="650" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="1290" y="603" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Localization... </text> </switch> </g> - <rect x="1210" y="435" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="1250" y="411.09" width="80" height="115.74" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1250" y="411.09" width="80" height="115.74" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 500px; margin-left: 1211px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 469px; margin-left: 1251px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> Perception <br/> Component @@ -215,20 +341,21 @@ </div> </div> </foreignObject> - <text x="1250" y="504" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="1290" y="473" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Perception... </text> </switch> </g> - <path d="M 1304.56 330.11 L 1370 329.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 1292.56 330.15 L 1304.53 324.11 L 1304.58 336.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="1210" y="290" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <path d="M 1344.56 317.7 L 1410 317.48" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 1332.56 317.74 L 1344.54 311.7 L 1344.58 323.7 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="1250" y="282" width="80" height="115.74" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1250" y="282" width="80" height="115.74" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 355px; margin-left: 1211px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 340px; margin-left: 1251px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> Human <br/> Machine @@ -238,368 +365,372 @@ </div> </div> </foreignObject> - <text x="1250" y="359" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="1290" y="343" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Human... </text> </switch> </g> - <rect x="1370" y="115" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="1410" y="217.05" width="770" height="567.95" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1410" y="217.05" width="770" height="567.95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/> + <rect x="1470" y="365" width="650" height="275.98" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1470" y="365" width="650" height="275.98" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 140px; margin-left: 1371px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 372px; margin-left: 1471px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - API Layer + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <b> + <br/> + <br/> + </b> </div> </div> </div> </foreignObject> - <text x="1755" y="144" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - API Layer + <text x="1795" y="384" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + ... </text> </switch> </g> - <path d="M 1947.5 217.05 L 1947.5 179.24" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 1947.5 167.24 L 1953.5 179.24 L 1941.5 179.24 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="1370" y="217.05" width="770" height="637.95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> - <path d="M 1755 325 Q 1755 325 1755 340.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 1755 352.76 L 1749 340.76 L 1761 340.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="1430" y="269" width="650" height="56" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <path d="M 1795 327.05 Q 1795 327.05 1795 350.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 1795 362.76 L 1789 350.76 L 1801 350.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="1510" y="386.37" width="560" height="106.83" fill="rgb(255, 255, 255)" stroke="#999999" stroke-dasharray="3 3" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 297px; margin-left: 1431px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 558px; height: 1px; padding-top: 393px; margin-left: 1511px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <b> - Mission Planning + Behavior </b> </div> </div> </div> </foreignObject> - <text x="1755" y="301" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Mission Planning + <text x="1790" y="405" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Behavior </text> </switch> </g> - <rect x="1430" y="355" width="650" height="390" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="1510" y="516.35" width="560" height="100.57" fill="rgb(255, 255, 255)" stroke="#999999" stroke-dasharray="3 3" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 362px; margin-left: 1431px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 558px; height: 1px; padding-top: 523px; margin-left: 1511px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <b> - <br/> - Scenario Planning + Motion </b> </div> </div> </div> </foreignObject> - <text x="1755" y="374" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Scenario Planning + <text x="1790" y="535" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Motion </text> </switch> </g> - <rect x="1465" y="415" width="395" height="290" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="1470" y="685" width="650" height="67.66" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1470" y="685" width="650" height="67.66" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 393px; height: 1px; padding-top: 422px; margin-left: 1466px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 692px; margin-left: 1471px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <b> - <br/> - Lane Driving Scenario + Validation </b> </div> </div> </div> </foreignObject> - <text x="1663" y="434" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Lane Driving Scenario + <text x="1795" y="704" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Validation </text> </switch> </g> - <path d="M 1977.5 705 L 1977.5 725 L 1818 725 L 1755 725 L 1755 760.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 1755 772.76 L 1749 760.76 L 1761 760.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="1910" y="415" width="135" height="290" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/> + <rect x="1430" y="228.58" width="140" height="30" fill="none" stroke="none" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 133px; height: 1px; padding-top: 560px; margin-left: 1911px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 244px; margin-left: 1500px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <b style="border-color: var(--border-color);"> - Third-party Planning Component + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: nowrap;"> + <b> + Planning Component </b> </div> </div> </div> </foreignObject> - <text x="1978" y="564" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Third-party Planning C... + <text x="1500" y="247" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Planning Component </text> </switch> </g> - <path d="M 1662.5 560 Q 1662.5 560 1662.5 576.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 1662.5 588.76 L 1656.5 576.76 L 1668.5 576.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="1485" y="465" width="355" height="95" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/> + <rect x="1250" y="669.26" width="80" height="115.74" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1250" y="669.26" width="80" height="115.74" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 353px; height: 1px; padding-top: 513px; margin-left: 1486px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 727px; margin-left: 1251px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <b style="border-color: var(--border-color);"> - Third-party Planning Component - </b> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style=""> + System + </div> + <div style=""> + Component + </div> </div> </div> </div> </foreignObject> - <text x="1663" y="516" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Third-party Planning Component + <text x="1290" y="731" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + System... </text> </switch> </g> - <path d="M 1662.5 686 L 1662.5 725 L 1755 725 L 1755 760.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 1755 772.76 L 1749 760.76 L 1761 760.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="1485" y="591" width="355" height="95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="1250" y="217.05" width="80" height="53.42" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1250" y="217.05" width="80" height="53.42" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 353px; height: 1px; padding-top: 598px; margin-left: 1486px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 244px; margin-left: 1251px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <b> - Motion Planning - </b> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + Map + <br/> + Component </div> </div> </div> </foreignObject> - <text x="1663" y="610" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Motion Planning + <text x="1290" y="247" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Map... </text> </switch> </g> - <path d="M 1755 831 L 1755 884.81" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 1755 896.81 L 1749 884.81 L 1761 884.81 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="1430" y="775" width="650" height="56" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="1550" y="425.56" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1550" y="425.56" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 803px; margin-left: 1431px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 435px; margin-left: 1551px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <b> - Validation - </b> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Lane Change + </div> </div> </div> </div> </foreignObject> - <text x="1755" y="807" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Validation + <text x="1600" y="438" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Lane Change </text> </switch> </g> - <rect x="1370" y="899.05" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="1679" y="425.56" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1679" y="425.56" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 924px; margin-left: 1371px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 435px; margin-left: 1680px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - Control Component + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Intersection + </div> </div> </div> </div> </foreignObject> - <text x="1755" y="928" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Control Component + <text x="1729" y="438" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Intersection </text> </switch> </g> - <rect x="1390" y="230" width="140" height="30" fill="none" stroke="none" pointer-events="all" transform="translate(2,3)" opacity="0.25"/> - <rect x="1390" y="230" width="140" height="30" fill="none" stroke="none" pointer-events="all"/> + <rect x="1808" y="425.56" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1808" y="425.56" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 245px; margin-left: 1460px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 435px; margin-left: 1809px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"> - <b> - Planning Component - </b> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Crosswalk + </div> </div> </div> </div> </foreignObject> - <text x="1460" y="249" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Planning Component + <text x="1858" y="438" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Crosswalk </text> </switch> </g> - <path d="M 1755 169 L 1755 254.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 1755 266.76 L 1749 254.76 L 1761 254.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="1210" y="725" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="1937" y="455.83" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1937" y="455.83" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 790px; margin-left: 1211px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 465px; margin-left: 1938px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style=""> - System - </div> - <div style=""> - Component + etc... </div> </div> </div> </div> </foreignObject> - <text x="1250" y="794" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - System... + <text x="1987" y="469" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + etc... </text> </switch> </g> - <path d="M 1510 165 L 1510 200.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 1510 212.76 L 1504 200.76 L 1516 200.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="1210" y="217.05" width="80" height="60" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="1550" y="549.31" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1550" y="549.31" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 247px; margin-left: 1211px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 559px; margin-left: 1551px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - Map - <br/> - Component + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Path Planning + </div> </div> </div> </div> </foreignObject> - <text x="1250" y="251" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Map... + <text x="1600" y="562" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Path Planning </text> </switch> </g> - <rect x="1503" y="628.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="1679" y="549.31" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1679" y="549.31" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 638px; margin-left: 1504px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 559px; margin-left: 1680px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - Path Smooth + Velocity Planning </div> </div> </div> </div> </foreignObject> - <text x="1547" y="641" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Path Smooth + <text x="1729" y="562" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Velocity Planning </text> </switch> </g> - <rect x="1618" y="628.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="1550" y="580.47" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1550" y="580.47" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 638px; margin-left: 1619px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 590px; margin-left: 1551px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - Velocity Smooth + Obstacle Stop </div> </div> </div> </div> </foreignObject> - <text x="1662" y="641" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Velocity Smooth + <text x="1600" y="593" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Obstacle Stop </text> </switch> </g> - <rect x="1503" y="659.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="1808" y="580.47" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1808" y="580.47" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 669px; margin-left: 1504px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 590px; margin-left: 1809px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <div style="font-size: 11px;"> - Collision Check + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style=""> + ML Planner </div> </div> </div> </div> </foreignObject> - <text x="1547" y="672" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Collision Check + <text x="1858" y="594" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + ML Planner </text> </switch> </g> - <rect x="1730" y="659.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <path d="M 1330 363.69 L 1395.76 363.7" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 1407.76 363.7 L 1395.76 369.7 L 1395.77 357.7 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 1330 470.52 L 1395.76 470.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 1407.76 470.53 L 1395.76 476.53 L 1395.77 464.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 1330 599.61 L 1395.76 599.62" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 1407.76 599.62 L 1395.76 605.62 L 1395.77 593.62 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 1344.56 727.23 L 1410 727.01" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 1332.56 727.27 L 1344.54 721.23 L 1344.58 733.23 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="1550" y="455.83" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1550" y="455.83" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 669px; margin-left: 1731px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 465px; margin-left: 1551px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <div style=""> - etc... + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Avoidance </div> </div> </div> </div> </foreignObject> - <text x="1775" y="672" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - etc... + <text x="1600" y="469" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Avoidance </text> </switch> </g> - <path d="M 1290 381.76 L 1355.76 381.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 1367.76 381.78 L 1355.76 387.77 L 1355.77 375.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 1290 501.76 L 1355.76 501.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 1367.76 501.78 L 1355.76 507.77 L 1355.77 495.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 1290 646.76 L 1355.76 646.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 1367.76 646.78 L 1355.76 652.77 L 1355.77 640.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 1304.56 790.11 L 1370 789.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 1292.56 790.15 L 1304.53 784.11 L 1304.58 796.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="1882" y="290" width="122" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="1679" y="455.83" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1679" y="455.83" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 120px; height: 1px; padding-top: 299px; margin-left: 1883px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 465px; margin-left: 1680px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - Route Planning + Pull Over </div> </div> </div> </div> </foreignObject> - <text x="1943" y="303" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Route Planning + <text x="1729" y="469" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Pull Over </text> </switch> </g> - <rect x="1730" y="628.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="1808" y="549.31" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1808" y="549.31" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 638px; margin-left: 1731px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 559px; margin-left: 1809px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> Drivable Area </div> @@ -607,18 +738,19 @@ </div> </div> </foreignObject> - <text x="1775" y="641" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="1858" y="562" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Drivable Area </text> </switch> </g> - <rect x="1618" y="659.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="1679" y="580.47" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1679" y="580.47" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 669px; margin-left: 1619px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 590px; margin-left: 1680px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> Slow Down </div> @@ -626,306 +758,419 @@ </div> </div> </foreignObject> - <text x="1662" y="672" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="1729" y="593" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Slow Down </text> </switch> </g> - <rect x="1843" y="793.51" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="1937" y="425.56" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1937" y="425.56" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 803px; margin-left: 1844px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 435px; margin-left: 1938px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - TTC Check + Stop Line </div> </div> </div> </div> </foreignObject> - <text x="1887" y="806" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - TTC Check + <text x="1987" y="438" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Stop Line </text> </switch> </g> - <rect x="1953" y="793.51" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="1808" y="455.83" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1808" y="455.83" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 803px; margin-left: 1954px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 465px; margin-left: 1809px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - ACC Check + Parking </div> </div> </div> </div> </foreignObject> - <text x="1997" y="806" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - ACC Check + <text x="1858" y="469" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Parking </text> </switch> </g> - <path d="M 2510 246.76 L 2575.76 246.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 2587.76 246.78 L 2575.76 252.77 L 2575.77 240.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="2430" y="581" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="1937" y="549.31" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1937" y="549.31" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 646px; margin-left: 2431px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 559px; margin-left: 1938px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <div style="text-align: left"> - Localization + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Freespace </div> - <div style="text-align: left"> - Component + </div> + </div> + </div> + </foreignObject> + <text x="1987" y="562" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Freespace + </text> + </switch> + </g> + <rect x="1937" y="580.47" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1937" y="580.47" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 590px; margin-left: 1938px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style=""> + etc... </div> </div> </div> </div> </foreignObject> - <text x="2470" y="650" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Localization... + <text x="1987" y="594" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + etc... </text> </switch> </g> - <rect x="2430" y="435" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <path d="M 1795 640.98 L 1795 670.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 1795 682.77 L 1789 670.77 L 1801 670.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="1550" y="719.29" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1550" y="719.29" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 500px; margin-left: 2431px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 729px; margin-left: 1551px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - Perception - <br/> - Component + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Collision Check + </div> </div> </div> </div> </foreignObject> - <text x="2470" y="504" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Perception... + <text x="1600" y="732" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Collision Check </text> </switch> </g> - <path d="M 2524.56 330.11 L 2590 329.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 2512.56 330.15 L 2524.53 324.11 L 2524.58 336.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="2430" y="290" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="1679" y="719.29" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1679" y="719.29" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 355px; margin-left: 2431px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 729px; margin-left: 1680px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - Human - <br/> - Machine - <br/> - Interface + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + TTC Check + </div> </div> </div> </div> </foreignObject> - <text x="2470" y="359" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Human... + <text x="1729" y="732" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + TTC Check </text> </switch> </g> - <rect x="2590" y="115" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="1937" y="719.29" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1937" y="719.29" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 140px; margin-left: 2591px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 729px; margin-left: 1938px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + etc... + </div> + </div> + </div> + </div> + </foreignObject> + <text x="1987" y="732" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + etc... + </text> + </switch> + </g> + <rect x="1808" y="719.29" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1808" y="719.29" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 729px; margin-left: 1809px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Confortability + </div> + </div> + </div> + </div> + </foreignObject> + <text x="1858" y="732" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Confortability + </text> + </switch> + </g> + <rect x="1470" y="258.58" width="650" height="68.47" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="1470" y="258.58" width="650" height="68.47" fill="#ffe6cc" stroke="#d79b00" pointer-events="none"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 293px; margin-left: 1471px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <b style=""> + <font style="font-size: 20px;"> + Third-party Planning Component + </font> + </b> + </div> + </div> + </div> + </foreignObject> + <text x="1795" y="297" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="15px" text-anchor="middle"> + Third-party Planning Component + </text> + </switch> + </g> + <path d="M 1795 752.67 L 1795 800.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 1795 812.76 L 1789 800.76 L 1801 800.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 1795 169 L 1795 249.06" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 1795 261.06 L 1789 249.06 L 1801 249.06 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="960" y="475" width="160" height="129" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/> + <rect x="160" y="115" width="770" height="50" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="160" y="115" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 140px; margin-left: 161px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> API Layer </div> </div> </div> </foreignObject> - <text x="2975" y="144" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="545" y="144" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> API Layer </text> </switch> </g> - <path d="M 3167.5 217.05 L 3167.5 179.24" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 3167.5 167.24 L 3173.5 179.24 L 3161.5 179.24 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="2590" y="217.05" width="770" height="637.95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> - <path d="M 2975 325 Q 2975 325 2975 340.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 2975 352.76 L 2969 340.76 L 2981 340.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="2650" y="269" width="650" height="56" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <path d="M 737.5 217.05 L 737.5 179.24" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 737.5 167.24 L 743.5 179.24 L 731.5 179.24 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="160" y="815" width="770" height="50" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="160" y="815" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 297px; margin-left: 2651px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 840px; margin-left: 161px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <b> - Mission Planning - </b> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + Control Component </div> </div> </div> </foreignObject> - <text x="2975" y="301" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Mission Planning + <text x="545" y="844" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Control Component </text> </switch> </g> - <rect x="2650" y="355" width="650" height="390" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <path d="M 300 165 L 300 200.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 300 212.76 L 294 200.76 L 306 200.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 80 243.5 L 145.76 243.51" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 157.76 243.51 L 145.76 249.51 L 145.77 237.51 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="0" y="541.07" width="80" height="115.74" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="0" y="541.07" width="80" height="115.74" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 362px; margin-left: 2651px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 599px; margin-left: 1px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <b> - <br/> - Scenario Planning - </b> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="text-align: left"> + Localization + </div> + <div style="text-align: left"> + Component + </div> </div> </div> </div> </foreignObject> - <text x="2975" y="374" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Scenario Planning + <text x="40" y="603" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Localization... </text> </switch> </g> - <rect x="2685" y="415" width="395" height="290" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="0" y="411.09" width="80" height="115.74" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="0" y="411.09" width="80" height="115.74" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 393px; height: 1px; padding-top: 422px; margin-left: 2686px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 469px; margin-left: 1px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <b> - <br/> - Lane Driving Scenario - </b> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + Perception + <br/> + Component </div> </div> </div> </foreignObject> - <text x="2883" y="434" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Lane Driving Scenario + <text x="40" y="473" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Perception... </text> </switch> </g> - <path d="M 3197.5 705 L 3197.5 725 L 3038 725 L 2975 725 L 2975 760.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 2975 772.76 L 2969 760.76 L 2981 760.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="3130" y="415" width="135" height="290" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <path d="M 94.56 317.7 L 160 317.48" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 82.56 317.74 L 94.54 311.7 L 94.58 323.7 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="0" y="282" width="80" height="115.74" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="0" y="282" width="80" height="115.74" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 133px; height: 1px; padding-top: 422px; margin-left: 3131px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 340px; margin-left: 1px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + Human + <br/> + Machine + <br/> + Interface + </div> + </div> + </div> + </foreignObject> + <text x="40" y="343" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Human... + </text> + </switch> + </g> + <rect x="160" y="217.05" width="770" height="567.95" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="160" y="217.05" width="770" height="567.95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/> + <rect x="220" y="263.3" width="650" height="63.75" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="220" y="263.3" width="650" height="63.75" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 270px; margin-left: 221px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <b> - <br/> - Parking Scenario + Mission Planning </b> </div> </div> </div> </foreignObject> - <text x="3198" y="434" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Parking Scenario + <text x="545" y="282" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Mission Planning </text> </switch> </g> - <path d="M 2882.5 560 Q 2882.5 560 2882.5 576.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 2882.5 588.76 L 2876.5 576.76 L 2888.5 576.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="2705" y="465" width="355" height="95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="220" y="365" width="650" height="275.98" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="220" y="365" width="650" height="275.98" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 353px; height: 1px; padding-top: 472px; margin-left: 2706px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 372px; margin-left: 221px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <b> - Behavior Planning + <br/> + <br/> </b> </div> </div> </div> </foreignObject> - <text x="2883" y="484" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Behavior Planning + <text x="545" y="384" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + ... </text> </switch> </g> - <path d="M 2882.5 686 L 2882.5 725 L 2975 725 L 2975 760.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 2975 772.76 L 2969 760.76 L 2981 760.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="2705" y="591" width="355" height="95" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <path d="M 545 327.05 Q 545 327.05 545 350.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 545 362.76 L 539 350.76 L 551 350.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="260" y="386.37" width="560" height="106.83" fill="rgb(255, 255, 255)" stroke="#999999" stroke-dasharray="3 3" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 353px; height: 1px; padding-top: 598px; margin-left: 2706px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 558px; height: 1px; padding-top: 393px; margin-left: 261px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <b> - Motion Planning + Behavior </b> </div> </div> </div> </foreignObject> - <text x="2883" y="610" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Motion Planning + <text x="540" y="405" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Behavior </text> </switch> </g> - <path d="M 2975 831 L 2975 884.81" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 2975 896.81 L 2969 884.81 L 2981 884.81 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="2650" y="775" width="650" height="56" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="260" y="516.35" width="560" height="100.57" fill="rgb(255, 255, 255)" stroke="#999999" stroke-dasharray="3 3" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 803px; margin-left: 2651px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 558px; height: 1px; padding-top: 523px; margin-left: 261px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <b> - Validation + Motion </b> </div> </div> </div> </foreignObject> - <text x="2975" y="807" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Validation + <text x="540" y="535" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Motion </text> </switch> </g> - <rect x="2590" y="899.05" width="770" height="50" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="220" y="685" width="650" height="67.66" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="220" y="685" width="650" height="67.66" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 768px; height: 1px; padding-top: 924px; margin-left: 2591px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 648px; height: 1px; padding-top: 692px; margin-left: 221px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - Control Component + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <b> + Validation + </b> </div> </div> </div> </foreignObject> - <text x="2975" y="928" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Control Component + <text x="545" y="704" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Validation </text> </switch> </g> - <rect x="2610" y="230" width="140" height="30" fill="none" stroke="none" pointer-events="all" transform="translate(2,3)" opacity="0.25"/> - <rect x="2610" y="230" width="140" height="30" fill="none" stroke="none" pointer-events="all"/> + <rect x="180" y="228.58" width="140" height="30" fill="none" stroke="none" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 245px; margin-left: 2680px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 244px; margin-left: 250px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: nowrap;"> <b> Planning Component </b> @@ -933,20 +1178,19 @@ </div> </div> </foreignObject> - <text x="2680" y="249" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="250" y="247" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Planning Component </text> </switch> </g> - <path d="M 2975 169 L 2975 254.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 2975 266.76 L 2969 254.76 L 2981 254.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="2430" y="725" width="80" height="130" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="0" y="669.26" width="80" height="115.74" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="0" y="669.26" width="80" height="115.74" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 790px; margin-left: 2431px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 727px; margin-left: 1px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style=""> System </div> @@ -957,20 +1201,19 @@ </div> </div> </foreignObject> - <text x="2470" y="794" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="40" y="731" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> System... </text> </switch> </g> - <path d="M 2730 165 L 2730 200.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 2730 212.76 L 2724 200.76 L 2736 200.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="2430" y="217.05" width="80" height="60" fill="#eeeeee" stroke="#36393d" pointer-events="all"/> + <rect x="0" y="217.05" width="80" height="53.42" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="0" y="217.05" width="80" height="53.42" fill="#eeeeee" stroke="#36393d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 247px; margin-left: 2431px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 244px; margin-left: 1px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> Map <br/> Component @@ -978,18 +1221,19 @@ </div> </div> </foreignObject> - <text x="2470" y="251" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="40" y="247" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> Map... </text> </switch> </g> - <rect x="2723" y="498.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="300" y="425.56" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="300" y="425.56" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 508px; margin-left: 2724px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 435px; margin-left: 301px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> Lane Change </div> @@ -997,18 +1241,19 @@ </div> </div> </foreignObject> - <text x="2768" y="511" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="350" y="438" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Lane Change </text> </switch> </g> - <rect x="2838" y="498.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="429" y="425.56" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="429" y="425.56" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 508px; margin-left: 2839px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 435px; margin-left: 430px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> Intersection </div> @@ -1016,18 +1261,19 @@ </div> </div> </foreignObject> - <text x="2883" y="511" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="479" y="438" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Intersection </text> </switch> </g> - <rect x="2950" y="498.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="558" y="425.56" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="558" y="425.56" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 508px; margin-left: 2951px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 435px; margin-left: 559px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> Crosswalk </div> @@ -1035,20 +1281,81 @@ </div> </div> </foreignObject> - <text x="2995" y="511" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="608" y="438" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Crosswalk </text> </switch> </g> - <rect x="2950" y="528.03" width="89" height="18.97" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/> + <rect x="300" y="549.31" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="300" y="549.31" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 538px; margin-left: 2951px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 559px; margin-left: 301px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Path Planning + </div> + </div> + </div> + </div> + </foreignObject> + <text x="350" y="562" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Path Planning + </text> + </switch> + </g> + <rect x="429" y="549.31" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="429" y="549.31" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 559px; margin-left: 430px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Velocity Planning + </div> + </div> + </div> + </div> + </foreignObject> + <text x="479" y="562" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Velocity Planning + </text> + </switch> + </g> + <rect x="300" y="580.47" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="300" y="580.47" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 590px; margin-left: 301px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Obstacle Stop + </div> + </div> + </div> + </div> + </foreignObject> + <text x="350" y="593" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Obstacle Stop + </text> + </switch> + </g> + <rect x="558" y="580.47" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="558" y="580.47" width="100" height="19" fill="#ffe6cc" stroke="#d79b00" pointer-events="none"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 590px; margin-left: 559px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;"> <div style=""> - <span style="border-color: var(--border-color);"> + <span style="font-size: 11px;"> Third-party Module </span> <br/> @@ -1057,256 +1364,267 @@ </div> </div> </foreignObject> - <text x="2995" y="541" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Third-party Mod... + <text x="608" y="594" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold"> + Third-party Modu... </text> </switch> </g> - <rect x="2723" y="628.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <path d="M 80 363.69 L 145.76 363.7" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 157.76 363.7 L 145.76 369.7 L 145.77 357.7 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 80 470.52 L 145.76 470.53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 157.76 470.53 L 145.76 476.53 L 145.77 464.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 80 599.61 L 145.76 599.62" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 157.76 599.62 L 145.76 605.62 L 145.77 593.62 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 94.56 727.23 L 160 727.01" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 82.56 727.27 L 94.54 721.23 L 94.58 733.23 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="300" y="295.05" width="125" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="300" y="295.05" width="125" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 638px; margin-left: 2724px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 123px; height: 1px; padding-top: 305px; margin-left: 301px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - Path Smooth + Route Planning </div> </div> </div> </div> </foreignObject> - <text x="2768" y="641" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Path Smooth + <text x="363" y="308" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Route Planning </text> </switch> </g> - <rect x="2838" y="628.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="300" y="455.83" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="300" y="455.83" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 638px; margin-left: 2839px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 465px; margin-left: 301px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - Velocity Smooth + Avoidance </div> </div> </div> </div> </foreignObject> - <text x="2883" y="641" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Velocity Smooth + <text x="350" y="469" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Avoidance </text> </switch> </g> - <rect x="2723" y="659.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="429" y="455.83" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="429" y="455.83" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 669px; margin-left: 2724px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 465px; margin-left: 430px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - Collision Check + Pull Over </div> </div> </div> </div> </foreignObject> - <text x="2768" y="672" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Collision Check + <text x="479" y="469" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Pull Over </text> </switch> </g> - <rect x="2950" y="659.03" width="89" height="18.97" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/> + <rect x="558" y="549.31" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="558" y="549.31" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 669px; margin-left: 2951px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 559px; margin-left: 559px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <div style=""> - Third-party Module - <br/> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + Drivable Area </div> </div> </div> </div> </foreignObject> - <text x="2995" y="672" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Third-party Mod... + <text x="608" y="562" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Drivable Area </text> </switch> </g> - <rect x="3152" y="508.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="429" y="580.47" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="429" y="580.47" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 518px; margin-left: 3153px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 590px; margin-left: 430px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - Free Space + Slow Down </div> </div> </div> </div> </foreignObject> - <text x="3197" y="521" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Free Space + <text x="479" y="593" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Slow Down </text> </switch> </g> - <rect x="3152" y="539.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="687" y="425.56" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="687" y="425.56" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 549px; margin-left: 3153px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 435px; margin-left: 688px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - Cost map + Stop Line </div> </div> </div> </div> </foreignObject> - <text x="3197" y="552" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Cost map + <text x="737" y="438" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Stop Line </text> </switch> </g> - <rect x="3152" y="572.03" width="89" height="18.97" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/> + <rect x="558" y="455.83" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="558" y="455.83" width="100" height="19" fill="#ffe6cc" stroke="#d79b00" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 582px; margin-left: 3153px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 465px; margin-left: 559px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <div style=""> - Third-party Module - <br/> - </div> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + Third-party Module </div> </div> </div> </foreignObject> - <text x="3197" y="585" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> - Third-party Mod... + <text x="608" y="469" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle" font-weight="bold"> + Third-party Module </text> </switch> </g> - <path d="M 2510 381.76 L 2575.76 381.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 2587.76 381.78 L 2575.76 387.77 L 2575.77 375.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 2510 501.76 L 2575.76 501.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 2587.76 501.78 L 2575.76 507.77 L 2575.77 495.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 2510 646.76 L 2575.76 646.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 2587.76 646.78 L 2575.76 652.77 L 2575.77 640.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 2524.56 790.11 L 2590 789.86" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 2512.56 790.15 L 2524.53 784.11 L 2524.58 796.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <rect x="3102" y="290" width="122" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="687" y="549.31" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="687" y="549.31" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 120px; height: 1px; padding-top: 299px; margin-left: 3103px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 559px; margin-left: 688px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - Route Planning + Freespace </div> </div> </div> </div> </foreignObject> - <text x="3163" y="303" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Route Planning + <text x="737" y="562" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Freespace </text> </switch> </g> - <rect x="2723" y="528.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="687" y="580.47" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="687" y="580.47" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 538px; margin-left: 2724px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 590px; margin-left: 688px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - <div style="font-size: 11px;"> - Avoidance + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style=""> + etc... </div> </div> </div> </div> </foreignObject> - <text x="2768" y="541" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Avoidance + <text x="737" y="594" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + etc... </text> </switch> </g> - <rect x="2838" y="528.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <path d="M 545 640.98 L 545 670.77" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 545 682.77 L 539 670.77 L 551 670.77 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="484" y="295.05" width="125" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="484" y="295.05" width="125" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 538px; margin-left: 2839px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 123px; height: 1px; padding-top: 305px; margin-left: 485px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - Pull Over + Goal Planning </div> </div> </div> </div> </foreignObject> - <text x="2883" y="541" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Pull Over + <text x="547" y="308" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Goal Planning </text> </switch> </g> - <rect x="2950" y="628.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="662" y="295.05" width="125" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="662" y="295.05" width="125" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 638px; margin-left: 2951px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 123px; height: 1px; padding-top: 305px; margin-left: 663px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - Drivable Area + etc... </div> </div> </div> </div> </foreignObject> - <text x="2995" y="641" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Drivable Area + <text x="725" y="308" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + etc... </text> </switch> </g> - <rect x="2838" y="659.03" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="300" y="719.29" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="300" y="719.29" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 669px; margin-left: 2839px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 729px; margin-left: 301px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - Slow Down + Collision Check </div> </div> </div> </div> </foreignObject> - <text x="2883" y="672" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - Slow Down + <text x="350" y="732" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Collision Check </text> </switch> </g> - <rect x="3063" y="793.51" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="429" y="719.29" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="429" y="719.29" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 803px; margin-left: 3064px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 729px; margin-left: 430px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> TTC Check </div> @@ -1314,80 +1632,114 @@ </div> </div> </foreignObject> - <text x="3108" y="806" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="479" y="732" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> TTC Check </text> </switch> </g> - <rect x="3173" y="793.51" width="89" height="18.97" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <rect x="687" y="719.29" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="687" y="719.29" width="100" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 729px; margin-left: 688px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + etc... + </div> + </div> + </div> + </div> + </foreignObject> + <text x="737" y="732" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + etc... + </text> + </switch> + </g> + <rect x="558" y="719.29" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="558" y="719.29" width="100" height="19" fill="#ffe6cc" stroke="#d79b00" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 87px; height: 1px; padding-top: 803px; margin-left: 3174px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 729px; margin-left: 559px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;"> <div style="font-size: 11px;"> - ACC Check + Third-party Module + <br/> </div> </div> </div> </div> </foreignObject> - <text x="3218" y="806" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> - ACC Check + <text x="608" y="732" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle" font-weight="bold"> + Third-party Module </text> </switch> </g> - <rect x="210" y="15" width="700" height="30" fill="none" stroke="none" pointer-events="all"/> + <path d="M 932 441.07 L 970 468.57 L 932 496.07 L 932 483.57 C 851.92 483.57 787 509.31 787 541.07 C 787 492.75 851.92 453.57 932 453.57 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" transform="translate(878.5,0)scale(-1,1)translate(-878.5,0)" pointer-events="none"/> + <path d="M 545 752.67 L 545 800.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 545 812.76 L 539 800.76 L 551 800.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 545 169 L 545 249.06" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 545 261.06 L 539 249.06 L 551 249.06 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <rect x="990" y="500.78" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="990" y="500.78" width="100" height="19" fill="#ffe6cc" stroke="#d79b00" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 698px; height: 1px; padding-top: 30px; margin-left: 211px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 510px; margin-left: 991px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 25px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - Replace the entier planning component + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + My Module 1 + </div> </div> </div> </div> </foreignObject> - <text x="560" y="38" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="25px" text-anchor="middle"> - Replace the entier planning component + <text x="1040" y="514" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle" font-weight="bold"> + My Module 1 </text> </switch> </g> - <rect x="1410" y="15" width="700" height="30" fill="none" stroke="none" pointer-events="all"/> + <rect x="990" y="529.22" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="990" y="529.22" width="100" height="19" fill="#ffe6cc" stroke="#d79b00" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 698px; height: 1px; padding-top: 30px; margin-left: 1411px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 539px; margin-left: 991px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 25px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - Replace the planning sub-component, - <br/> - or add a new scenario component + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + My Module 2 + </div> </div> </div> </div> </foreignObject> - <text x="1760" y="38" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="25px" text-anchor="middle"> - Replace the planning sub-component,... + <text x="1040" y="542" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle" font-weight="bold"> + My Module 2 </text> </switch> </g> - <rect x="2630" y="15" width="700" height="30" fill="none" stroke="none" pointer-events="all"/> + <rect x="990" y="559.22" width="100" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> + <rect x="990" y="559.22" width="100" height="19" fill="#ffe6cc" stroke="#d79b00" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 698px; height: 1px; padding-top: 30px; margin-left: 2631px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 569px; margin-left: 991px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> - <div style="display: inline-block; font-size: 25px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> - Add a new planning module + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + <div style="font-size: 11px;"> + My Module 3 + </div> </div> </div> </div> </foreignObject> - <text x="2980" y="38" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="25px" text-anchor="middle"> - Add a new planning module + <text x="1040" y="572" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle" font-weight="bold"> + My Module 3 </text> </switch> </g> diff --git a/docs/design/autoware-architecture/planning/image/planning-diagram.drawio-tmp.svg b/docs/design/autoware-architecture/planning/image/planning-diagram.drawio-tmp.svg new file mode 100644 index 00000000000..8ffebd0ffb6 --- /dev/null +++ b/docs/design/autoware-architecture/planning/image/planning-diagram.drawio-tmp.svg @@ -0,0 +1,1514 @@ +<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1521px" height="2091px" viewBox="-0.5 -0.5 1521 2091" content="<mxfile><diagram id="8qt1-HtFgWOiWtJ-FPd8" name="planning (v0.13.0)">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</diagram></mxfile>"> + <defs/> + <g> + <rect x="470" y="140" width="850" height="1880" fill="#fffdf5" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="510" y="190" width="760" height="90" fill="#fffceb" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="510" y="1920" width="760" height="80" fill="#fffceb" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="510" y="330" width="390" height="1270" fill="#fffceb" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="550" y="400" width="300" height="710" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="552.5" y="1170" width="297.5" height="400" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="950" y="330" width="320" height="1270" fill="#fffceb" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="970.75" y="346" width="90" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 361px; margin-left: 972px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + Parking Scenario + </div> + </div> + </div> + </foreignObject> + <text x="1016" y="365" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold"> + Parking Scenario + </text> + </switch> + </g> + <path d="M 895 260 L 895 310 L 700 310 L 700 438.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 700 445.53 L 695 435.53 L 700 438.03 L 705 435.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 895 260 L 895 310 L 980 310 L 980 593.57 L 1028.03 593.51" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1035.53 593.51 L 1025.53 598.52 L 1028.03 593.51 L 1025.52 588.52 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 280px; margin-left: 895px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + route + </div> + </div> + </div> + </foreignObject> + <text x="895" y="283" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + route + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/mission_planner"> + <rect x="615" y="210" width="560" height="50" rx="7.5" ry="7.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 558px; height: 1px; padding-top: 235px; margin-left: 616px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + mission_planner + </div> + </div> + </div> + </foreignObject> + <text x="895" y="239" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + mission_planner + </text> + </switch> + </g> + </a> + <path d="M 700 660 L 700 708.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 700 715.53 L 695 705.53 L 700 708.03 L 705 705.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 690px; margin-left: 700px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + path_with_lane_id + </div> + </div> + </div> + </foreignObject> + <text x="700" y="693" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + path_with_lane_id + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/behavior_path_planner"> + <rect x="590" y="450" width="220" height="210" rx="10.5" ry="10.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + </a> + <path d="M 700 1090 L 700 1208.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 700 1215.53 L 695 1205.53 L 700 1208.03 L 705 1205.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1150px; margin-left: 700px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + path + </div> + </div> + </div> + </foreignObject> + <text x="700" y="1153" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + path + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/behavior_velocity_planner"> + <rect x="590" y="720" width="220" height="370" rx="8.8" ry="8.8" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + </a> + <path d="M 700 1270 L 700 1298.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 700 1305.53 L 695 1295.53 L 700 1298.03 L 705 1295.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1281px; margin-left: 701px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Trajectory + </div> + </div> + </div> + </foreignObject> + <text x="701" y="1285" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Trajectory + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/obstacle_avoidance_planner"> + <rect x="590" y="1220" width="220" height="50" rx="7.5" ry="7.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 1245px; margin-left: 591px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + obstacle_ + <br/> + avoidance_planner + </div> + </div> + </div> + </foreignObject> + <text x="700" y="1249" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + obstacle_... + </text> + </switch> + </g> + </a> + <path d="M 700 1360 L 700 1388.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 700 1395.53 L 695 1385.53 L 700 1388.03 L 705 1385.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1380px; margin-left: 700px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Trajectory + </div> + </div> + </div> + </foreignObject> + <text x="700" y="1383" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Trajectory + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/obstacle_velocity_limiter"> + <rect x="590" y="1310" width="220" height="50" rx="7.5" ry="7.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 1335px; margin-left: 591px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + obstacle_velocity_limiter + </div> + </div> + </div> + </foreignObject> + <text x="700" y="1339" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + obstacle_velocity_limiter + </text> + </switch> + </g> + </a> + <path d="M 700 1540 L 700 1630 L 810 1630 L 810 1668.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 810 1675.53 L 805 1665.53 L 810 1668.03 L 815 1665.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1631px; margin-left: 763px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Trajectory + </div> + </div> + </div> + </foreignObject> + <text x="763" y="1634" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Trajectory + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/obstacle_stop_planner"> + <rect x="590" y="1400" width="220" height="140" rx="9.8" ry="9.8" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + </a> + <path d="M 895 1740 L 895 1808.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 895 1815.53 L 890 1805.53 L 895 1808.03 L 900 1805.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1780px; margin-left: 895px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Trajectory + </div> + </div> + </div> + </foreignObject> + <text x="895" y="1783" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Trajectory + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/scenario_selector"> + <rect x="725" y="1680" width="340" height="60" rx="9" ry="9" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 338px; height: 1px; padding-top: 1710px; margin-left: 726px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + scenario_selector + </div> + </div> + </div> + </foreignObject> + <text x="895" y="1714" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + scenario_selector + </text> + </switch> + </g> + </a> + <path d="M 895 1880 L 895 1928.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 895 1935.53 L 890 1925.53 L 895 1928.03 L 900 1925.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1900px; margin-left: 896px;"> + <div data-drawio-colors="color: #666666; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(102, 102, 102); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + <font color="#000000"> + Trajectory + </font> + </div> + </div> + </div> + </foreignObject> + <text x="896" y="1903" fill="#666666" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Trajectory + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/motion_velocity_smoother"> + <rect x="815" y="1820" width="160" height="60" rx="9" ry="9" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 1850px; margin-left: 816px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + motion_velocity_ + <br/> + smoother + </div> + </div> + </div> + </foreignObject> + <text x="895" y="1854" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + motion_velocity_... + </text> + </switch> + </g> + </a> + <path d="M 1110 617 L 1110 1630 L 980 1630 L 980 1668.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 980 1675.53 L 975 1665.53 L 980 1668.03 L 985 1665.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1630px; margin-left: 1058px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Trajectory + </div> + </div> + </div> + </foreignObject> + <text x="1058" y="1633" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Trajectory + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/freespace_planner"> + <rect x="1040" y="570" width="140" height="47" rx="7.05" ry="7.05" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 594px; margin-left: 1041px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + freespace_planner + </div> + </div> + </div> + </foreignObject> + <text x="1110" y="597" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + freespace_planner + </text> + </switch> + </g> + </a> + <path d="M 1110 480 L 1110 561.76" fill="none" stroke="#d4b455" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1110 567.76 L 1106 559.76 L 1110 561.76 L 1114 559.76 Z" fill="#d4b455" stroke="#d4b455" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 521px; margin-left: 1110px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + occupancy_grid + </div> + </div> + </div> + </foreignObject> + <text x="1110" y="525" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + occupancy_grid + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/costmap_generator"> + <rect x="1040" y="390" width="140" height="90" rx="13.5" ry="13.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 435px; margin-left: 1041px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + costmap_generator + </div> + </div> + </div> + </foreignObject> + <text x="1110" y="439" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + costmap_generator + </text> + </switch> + </g> + </a> + <rect x="600" y="750" width="60" height="50" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 775px; margin-left: 601px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + behavior + <br/> + velocity + <br/> + planner + </div> + </div> + </div> + </foreignObject> + <text x="630" y="779" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + behavior... + </text> + </switch> + </g> + <rect x="600" y="530" width="60" height="50" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 555px; margin-left: 601px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + behavior + <br/> + path + <br/> + planner + </div> + </div> + </div> + </foreignObject> + <text x="630" y="559" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + behavior... + </text> + </switch> + </g> + <path d="M 839 50 L 840.83 178.03" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 840.94 185.53 L 835.79 175.6 L 840.83 178.03 L 845.79 175.46 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 86px; margin-left: 840px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + goal + </div> + </div> + </div> + </foreignObject> + <text x="840" y="89" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + goal + </text> + </switch> + </g> + <path d="M 440 240 L 440 235 L 606.76 235" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 612.76 235 L 604.76 239 L 606.76 235 L 604.76 231 Z" fill="#b83232" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="600" y="1425" width="60" height="50" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 1450px; margin-left: 601px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + obstacle + <br/> + stop + <br/> + planner + </div> + </div> + </div> + </foreignObject> + <text x="630" y="1454" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + obstacle... + </text> + </switch> + </g> + <rect x="672.5" y="1458" width="120" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1473px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + slow_down + </div> + </div> + </div> + </foreignObject> + <text x="733" y="1477" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + slow_down + </text> + </switch> + </g> + <rect x="672.5" y="1496" width="120" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1511px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + adaptive_cruise + </div> + </div> + </div> + </foreignObject> + <text x="733" y="1515" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + adaptive_cruise + </text> + </switch> + </g> + <rect x="672.5" y="1420" width="120" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1435px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + stop + </div> + </div> + </div> + </foreignObject> + <text x="733" y="1439" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + stop + </text> + </switch> + </g> + <rect x="520" y="350" width="90" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 365px; margin-left: 521px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + LaneDriving Scenario + </div> + </div> + </div> + </foreignObject> + <text x="565" y="369" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold"> + LaneDriving Sce... + </text> + </switch> + </g> + <rect x="552" y="410" width="120" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 425px; margin-left: 553px;"> + <div data-drawio-colors="color: #666666; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(102, 102, 102); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + <span style="font-weight: normal"> + <font color="#000000"> + Behavior Planning + </font> + </span> + </div> + </div> + </div> + </foreignObject> + <text x="612" y="429" fill="#666666" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold"> + Behavior Planning + </text> + </switch> + </g> + <rect x="552" y="1180" width="120" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1195px; margin-left: 553px;"> + <div data-drawio-colors="color: #666666; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(102, 102, 102); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + <span style="font-weight: normal"> + <font color="#000000"> + Motion Planning + </font> + </span> + </div> + </div> + </div> + </foreignObject> + <text x="612" y="1199" fill="#666666" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold"> + Motion Planning + </text> + </switch> + </g> + <path d="M 440 240 L 440 905 L 581.76 905" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 587.76 905 L 579.76 909 L 581.76 905 L 579.76 901 Z" fill="#b83232" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 440 240 L 440 559.57 L 581.1 559.62" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 587.1 559.62 L 579.1 563.62 L 581.1 559.62 L 579.11 555.62 Z" fill="#b83232" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="470" y="2050" width="850" height="40" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 848px; height: 1px; padding-top: 2070px; margin-left: 471px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + To Control + </div> + </div> + </div> + </foreignObject> + <text x="895" y="2074" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + To Control + </text> + </switch> + </g> + <path d="M 1410 311 L 1360 311 L 1360 412.57 L 1188.24 412.5" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1182.24 412.5 L 1190.24 408.5 L 1188.24 412.5 L 1190.23 416.5 Z" fill="#b83232" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 388px; margin-left: 1358px;"> + <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + vector_map + </div> + </div> + </div> + </foreignObject> + <text x="1358" y="391" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + vector_map + </text> + </switch> + </g> + <path d="M 249 501 L 436 501.82 C 436.02 496.62 444.02 496.66 444 501.86 L 444 501.86 L 581.76 502.46" fill="none" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 587.76 502.49 L 579.75 506.45 L 581.76 502.46 L 579.78 498.46 Z" fill="#7cab62" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 502px; margin-left: 345px;"> + <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Dynamic Objects + </div> + </div> + </div> + </foreignObject> + <text x="345" y="505" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Dynamic Objects + </text> + </switch> + </g> + <path d="M 160 785 L 436 785.64 C 436.01 780.44 444.01 780.46 444 785.66 L 444 785.66 L 581.76 785.98" fill="none" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 587.76 785.99 L 579.75 789.98 L 581.76 785.98 L 579.77 781.98 Z" fill="#7cab62" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 785px; margin-left: 329px;"> + <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Dynamic Objects + </div> + </div> + </div> + </foreignObject> + <text x="329" y="788" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Dynamic Objects + </text> + </switch> + </g> + <path d="M 251 1321 L 581.76 1322.46" fill="none" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 587.76 1322.49 L 579.75 1326.45 L 581.76 1322.46 L 579.78 1318.45 Z" fill="#7cab62" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1321px; margin-left: 342px;"> + <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Dynamic Objects + </div> + </div> + </div> + </foreignObject> + <text x="342" y="1324" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Dynamic Objects + </text> + </switch> + </g> + <path d="M 210 1435 L 581.76 1435" fill="none" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 587.76 1435 L 579.76 1439 L 581.76 1435 L 579.76 1431 Z" fill="#7cab62" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1436px; margin-left: 347px;"> + <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Dynamic Objects + </div> + </div> + </div> + </foreignObject> + <text x="347" y="1439" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Dynamic Objects + </text> + </switch> + </g> + <path d="M 248 830 L 436 829.94 C 436 824.74 444 824.74 444 829.94 L 444 829.94 L 579.78 829.89" fill="none" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 585.78 829.89 L 577.79 833.89 L 579.78 829.89 L 577.78 825.89 Z" fill="#82b366" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 830px; margin-left: 326px;"> + <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Obstacle Points + </div> + </div> + </div> + </foreignObject> + <text x="326" y="833" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Obstacle Points + </text> + </switch> + </g> + <path d="M 248 1347 L 581.76 1347.49" fill="none" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 587.76 1347.5 L 579.76 1351.49 L 581.76 1347.49 L 579.77 1343.49 Z" fill="#82b366" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1346px; margin-left: 328px;"> + <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Obstacle Points + </div> + </div> + </div> + </foreignObject> + <text x="328" y="1349" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Obstacle Points + </text> + </switch> + </g> + <path d="M 248 1245 L 581.76 1245" fill="none" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 587.76 1245 L 579.76 1249 L 581.76 1245 L 579.76 1241 Z" fill="#7cab62" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1246px; margin-left: 345px;"> + <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Dynamic Objects + </div> + </div> + </div> + </foreignObject> + <text x="345" y="1249" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Dynamic Objects + </text> + </switch> + </g> + <path d="M 251 1475.24 L 581.76 1475.01" fill="none" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 587.76 1475 L 579.77 1479.01 L 581.76 1475.01 L 579.76 1471.01 Z" fill="#82b366" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1476px; margin-left: 329px;"> + <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Obstacle Points + </div> + </div> + </div> + </foreignObject> + <text x="329" y="1479" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Obstacle Points + </text> + </switch> + </g> + <path d="M 1150 1695 L 1073.24 1695" fill="none" stroke="#d4b455" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1067.24 1695 L 1075.24 1691 L 1073.24 1695 L 1075.24 1699 Z" fill="#d4b455" stroke="#d4b455" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1680px; margin-left: 1150px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + route (from mission_planner) + </div> + </div> + </div> + </foreignObject> + <text x="1150" y="1683" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + route (from mission_planner) + </text> + </switch> + </g> + <path d="M 440 240 L 440 1710 L 716.76 1710" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 722.76 1710 L 714.76 1714 L 716.76 1710 L 714.76 1706 Z" fill="#b83232" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 250 1765.24 L 459.21 1766.16" fill="none" stroke="#5899db" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 465.21 1766.19 L 457.2 1770.15 L 459.21 1766.16 L 457.23 1762.15 Z" fill="#5899db" stroke="#5899db" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1764px; margin-left: 332px;"> + <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + vehicle_state + </div> + </div> + </div> + </foreignObject> + <text x="332" y="1768" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + vehicle_state + </text> + </switch> + </g> + <rect x="140" y="1690" width="110" height="150" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 1765px; margin-left: 141px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + <div style="text-align: left"> + Localization + </div> + </div> + </div> + </div> + </foreignObject> + <text x="195" y="1769" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Localization + </text> + </switch> + </g> + <path d="M 41 608 L 436 607.64 C 436 602.44 444 602.43 444 607.63 L 444 607.63 L 581.76 607.51" fill="none" stroke="#808080" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 587.76 607.5 L 579.77 611.51 L 581.76 607.51 L 579.76 603.51 Z" fill="#808080" stroke="#808080" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 609px; margin-left: 307px;"> + <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + approval, + <br/> + force_approval + </div> + </div> + </div> + </foreignObject> + <text x="307" y="613" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + approval,... + </text> + </switch> + </g> + <path d="M 35 970 L 436 970.72 C 436.01 965.52 444.01 965.54 444 970.74 L 444 970.74 L 581.76 970.99" fill="none" stroke="#808080" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 587.76 971 L 579.76 974.98 L 581.76 970.99 L 579.77 966.98 Z" fill="#808080" stroke="#808080" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 965px; margin-left: 341px;"> + <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + external_crosswalk_states, + <br/> + external_intersection_states, + <br/> + external_traffic_light_states + </div> + </div> + </div> + </foreignObject> + <text x="341" y="969" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + external_crosswalk_states,... + </text> + </switch> + </g> + <rect x="480" y="150" width="90" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 165px; margin-left: 481px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + Planning + </div> + </div> + </div> + </foreignObject> + <text x="525" y="169" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold"> + Planning + </text> + </switch> + </g> + <path d="M 250 750 L 436 750 C 436 744.8 444 744.8 444 750 L 444 750 L 581.76 750" fill="none" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 587.76 750 L 579.76 754 L 581.76 750 L 579.76 746 Z" fill="#7cab62" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 751px; margin-left: 330px;"> + <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Traffic Light States + </div> + </div> + </div> + </foreignObject> + <text x="330" y="754" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Traffic Light States + </text> + </switch> + </g> + <path d="M 41 1510.5 L 436 1510.14 C 436 1504.94 444 1504.93 444 1510.13 L 444 1510.13 L 581.76 1510.01" fill="none" stroke="#808080" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 587.76 1510 L 579.77 1514.01 L 581.76 1510.01 L 579.76 1506.01 Z" fill="#808080" stroke="#808080" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1512px; margin-left: 302px;"> + <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + expand_stop_range + </div> + </div> + </div> + </foreignObject> + <text x="302" y="1515" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + expand_stop_range + </text> + </switch> + </g> + <rect x="140" y="400" width="110" height="1270" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 1035px; margin-left: 141px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Perception + </div> + </div> + </div> + </foreignObject> + <text x="195" y="1039" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Perception + </text> + </switch> + </g> + <path d="M 36 1849.5 L 521.76 1849.99" fill="none" stroke="#808080" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 527.76 1850 L 519.76 1853.99 L 521.76 1849.99 L 519.77 1845.99 Z" fill="#808080" stroke="#808080" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1851px; margin-left: 302px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + velocity_limit + </div> + </div> + </div> + </foreignObject> + <text x="302" y="1854" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + velocity_limit + </text> + </switch> + </g> + <rect x="0" y="230" width="80" height="1640" fill="#bac8d3" stroke="#23445d" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 1050px; margin-left: 1px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Human + <br/> + Machine + <br/> + Interface + </div> + </div> + </div> + </foreignObject> + <text x="40" y="1054" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Human... + </text> + </switch> + </g> + <path d="M 1410 545 L 1360 545 L 1360 457.57 L 1188.24 457.5" fill="none" stroke="#97d077" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1182.24 457.5 L 1190.24 453.5 L 1188.24 457.5 L 1190.23 461.5 Z" fill="#97d077" stroke="#97d077" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 650 1850 L 806.76 1850" fill="none" stroke="#d6b656" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 812.76 1850 L 804.76 1854 L 806.76 1850 L 804.76 1846 Z" fill="#d6b656" stroke="#d6b656" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="530" y="1820" width="120" height="60" rx="9" ry="9" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1850px; margin-left: 531px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + external_velocity + <br/> + _limit_selector + </div> + </div> + </div> + </foreignObject> + <text x="590" y="1854" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + external_velocity... + </text> + </switch> + </g> + <path d="M 590 1670 L 590 1811.76" fill="none" stroke="#d6b656" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 590 1817.76 L 586 1809.76 L 590 1811.76 L 594 1809.76 Z" fill="#d6b656" stroke="#d6b656" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1796px; margin-left: 590px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + velocity_limit + <br/> + </div> + </div> + </div> + </foreignObject> + <text x="590" y="1799" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + velocity_l... + </text> + </switch> + </g> + <rect x="672.5" y="525" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 539px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + avoidance + </div> + </div> + </div> + </foreignObject> + <text x="733" y="542" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + avoidance + </text> + </switch> + </g> + <rect x="672.5" y="557" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 571px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + side_shift + </div> + </div> + </div> + </foreignObject> + <text x="733" y="574" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + side_shift + </text> + </switch> + </g> + <rect x="672.5" y="492" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 506px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + lane_change + </div> + </div> + </div> + </foreignObject> + <text x="733" y="509" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + lane_change + </text> + </switch> + </g> + <rect x="672.5" y="460" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 474px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + lane_following + </div> + </div> + </div> + </foreignObject> + <text x="733" y="477" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + lane_following + </text> + </switch> + </g> + <rect x="672.5" y="590" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 604px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + pull_over + </div> + </div> + </div> + </foreignObject> + <text x="733" y="607" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + pull_over + </text> + </switch> + </g> + <rect x="672.5" y="622.46" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 636px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + pull_out + </div> + </div> + </div> + </foreignObject> + <text x="733" y="640" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + pull_out + </text> + </switch> + </g> + <rect x="672.5" y="774" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 787px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + blind_spot + </div> + </div> + </div> + </foreignObject> + <text x="733" y="791" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + blind_spot + </text> + </switch> + </g> + <rect x="672.5" y="808" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 821px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + cross_walk + </div> + </div> + </div> + </foreignObject> + <text x="733" y="825" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + cross_walk + </text> + </switch> + </g> + <rect x="672.5" y="841" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 854px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + stop_line + </div> + </div> + </div> + </foreignObject> + <text x="733" y="858" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + stop_line + </text> + </switch> + </g> + <rect x="672.5" y="876" width="120" height="24.32" rx="3.65" ry="3.65" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 888px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + traffic_light + </div> + </div> + </div> + </foreignObject> + <text x="733" y="892" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + traffic_light + </text> + </switch> + </g> + <rect x="672.5" y="909" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 922px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + intersection + </div> + </div> + </div> + </foreignObject> + <text x="733" y="926" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + intersection + </text> + </switch> + </g> + <rect x="672.5" y="740" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 753px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + detection_area + </div> + </div> + </div> + </foreignObject> + <text x="733" y="757" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + detection_area + </text> + </switch> + </g> + <rect x="672.5" y="943" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 956px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + no_stopping_area + </div> + </div> + </div> + </foreignObject> + <text x="733" y="960" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + no_stopping_area + </text> + </switch> + </g> + <rect x="672.5" y="976" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 989px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + virtual_traffic_light + </div> + </div> + </div> + </foreignObject> + <text x="733" y="993" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + virtual_traffic_light + </text> + </switch> + </g> + <rect x="672.5" y="1010" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1023px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + occlusion_spot + </div> + </div> + </div> + </foreignObject> + <text x="733" y="1027" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + occlusion_spot + </text> + </switch> + </g> + <rect x="672.5" y="1043.95" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1057px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + run_out + </div> + </div> + </div> + </foreignObject> + <text x="733" y="1061" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + run_out + </text> + </switch> + </g> + <path d="M 920 50 L 920 178.03" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 920 185.53 L 915 175.53 L 920 178.03 L 925 175.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 86px; margin-left: 920px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + check_point + </div> + </div> + </div> + </foreignObject> + <text x="920" y="89" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + check_point + </text> + </switch> + </g> + <path d="M 250 295 L 440 295 L 440 1335 L 581.76 1335" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 587.76 1335 L 579.76 1339 L 581.76 1335 L 579.76 1331 Z" fill="#b83232" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 270px; margin-left: 331px;"> + <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + vector_map + </div> + </div> + </div> + </foreignObject> + <text x="331" y="273" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + vector_map + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/surround_obstacle_checker"> + <rect x="500" y="1620" width="180" height="50" rx="7.5" ry="7.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 1645px; margin-left: 501px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + surround_obstacle_checker + </div> + </div> + </div> + </foreignObject> + <text x="590" y="1649" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + surround_obstacle_checker + </text> + </switch> + </g> + </a> + <path d="M 670 1750 L 670 1780 L 590 1780" fill="none" stroke="#d6b656" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="6 6" pointer-events="stroke"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1750px; margin-left: 670px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + (from other planning modules) + </div> + </div> + </div> + </foreignObject> + <text x="670" y="1753" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + (from othe... + </text> + </switch> + </g> + <path d="M 250 1650.24 L 436 1650.06 C 436 1644.86 444 1644.85 444 1650.05 L 444 1650.05 L 491.76 1650.01" fill="none" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 497.76 1650 L 489.77 1654.01 L 491.76 1650.01 L 489.76 1646.01 Z" fill="#82b366" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1651px; margin-left: 338px;"> + <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Obstacle Points + </div> + </div> + </div> + </foreignObject> + <text x="338" y="1654" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Obstacle Points + </text> + </switch> + </g> + <path d="M 250 1630 L 436 1630 C 436 1624.8 444 1624.8 444 1630 L 444 1630 L 491.76 1630" fill="none" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 497.76 1630 L 489.76 1634 L 491.76 1630 L 489.76 1626 Z" fill="#7cab62" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1631px; margin-left: 351px;"> + <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Dynamic Objects + </div> + </div> + </div> + </foreignObject> + <text x="351" y="1634" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Dynamic Objects + </text> + </switch> + </g> + <path d="M 895 1990 L 895 2038.03" fill="none" stroke="#d6b656" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 895 2045.53 L 890 2035.53 L 895 2038.03 L 900 2035.53 Z" fill="#d6b656" stroke="#d6b656" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 2010px; margin-left: 895px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + <span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 11px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;"> + Trajectory + </span> + </div> + </div> + </div> + </foreignObject> + <text x="895" y="2013" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Trajectory + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/planning_validator"> + <rect x="815" y="1940" width="160" height="50" rx="7.5" ry="7.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 1965px; margin-left: 816px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + planning_validator + </div> + </div> + </div> + </foreignObject> + <text x="895" y="1969" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + planning_validator + </text> + </switch> + </g> + </a> + <rect x="470" y="0" width="850" height="50" fill="#f5f5f5" stroke="#666666" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 848px; height: 1px; padding-top: 25px; margin-left: 471px;"> + <div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + API Layer + </div> + </div> + </div> + </foreignObject> + <text x="895" y="29" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle"> + API Layer + </text> + </switch> + </g> + <rect x="140" y="230" width="110" height="130" fill="#f8cecc" stroke="#b85450" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 295px; margin-left: 141px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Map + </div> + </div> + </div> + </foreignObject> + <text x="195" y="299" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Map + </text> + </switch> + </g> + <rect x="1410" y="246" width="110" height="130" fill="#f8cecc" stroke="#b85450" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 311px; margin-left: 1411px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Map + </div> + </div> + </div> + </foreignObject> + <text x="1465" y="315" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Map + </text> + </switch> + </g> + <rect x="1410" y="450" width="110" height="190" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 545px; margin-left: 1411px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Perception + </div> + </div> + </div> + </foreignObject> + <text x="1465" y="549" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Perception + </text> + </switch> + </g> + <rect x="515" y="200" width="90" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 215px; margin-left: 516px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + Mission Planning + </div> + </div> + </div> + </foreignObject> + <text x="560" y="219" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold"> + Mission Planning + </text> + </switch> + </g> + <rect x="510" y="1930" width="90" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 1945px; margin-left: 511px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + Validation + </div> + </div> + </div> + </foreignObject> + <text x="555" y="1949" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold"> + Validation + </text> + </switch> + </g> + </g> + <switch> + <g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/> + <a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"> + <text text-anchor="middle" font-size="10px" x="50%" y="100%"> + Text is not SVG - cannot display + </text> + </a> + </switch> +</svg> \ No newline at end of file diff --git a/docs/design/autoware-architecture/planning/index-update.md b/docs/design/autoware-architecture/planning/index-update.md new file mode 100644 index 00000000000..04760531a59 --- /dev/null +++ b/docs/design/autoware-architecture/planning/index-update.md @@ -0,0 +1,330 @@ +# Planning component design +<!-- +- discussionsはトレードオフ選定とかにしたい +- サードパーティによって拡張というよりは、誰でも拡張できるって言い回しのほうが良いはず +- mission plannerの使われ方を重点的に考えよう。FMSとして機能が外だしされることがあるから、これは別れてるのよ。 +- ハイレベルなデザインと詳細なデザインではなく、アーキテクチャのためのデザイン(要求ベース、これがやりたい)と、アーキテクチャ(詳細なフロー)ができるはず。 +- デザインの部分に、ポリシーによる変更がわかるような書き方があると良い。ポリシーA(右側走行)になったときに、いくつかのモジュールが特定の設定で起動する。どう図にするか。。。 +- このポリシーに対して、何がどうかわるかという例があるといい。自動運転レベルが変わったときに、HMIとの連携がこう変わって、軌道モジュールがこう変わる、とか。 +- ハイレベルに対するユースケースを上げる +- 車両の振る舞いのユースケース + - 話ゴールやチェくポイント、NGポイントを与えてplanning内部でルートを計算して進む / 渋滞情報を加味したルートを外部から与えて走行する +開発者のユースケース + - 中の作りの話(実装や設計レベル):機能の差し替えができていてほしいので(レーンチェンジAとレーンチェンジBとか)、柔軟に変更できる必要があり、各機能はモジュールとして実装される。 + --> + +## Context and scope + +自動運転システムにおける Planning コンポーネントの役割は、与えられたミッションを満たすために、安全で交通ルールに基づいた自動運転車両の目標軌道(経路と速度)を生成することである。 + +このドキュメントではAutowareにおけるplanningの要求やデザインをまとめる。これによって、開発者はplanning Componentがどのような考えで設計されているのか、およびそれらをどう拡張させていくのかを理解することができます。 + +ドキュメントの前半ではハイレベルな要求やデザインを、後半は実際の実装や提供機能について述べる。 + +## Goals and non-goals + +我々の目標は、純粋な自動運転システムの開発ではなく、自動運転"プラットフォーム"の開発である。このプラットフォームでは、誰もが自動運転の機能を自由に拡張できる。 + + +Autowareではこのプラットフォーム観点から [microautonomy architecture](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts) の概念を提唱しています。Microautonomyとは、適切な機能のモジュール化やインターフェースの明確な定義に基づき、高い拡張性を焦点を当てた自動運転システムの設計コンセプトです。 + +これを踏まえ、Planning component の設計方針は、世の中のすべての複雑な自動運転のユースケースを解決することではなく(なぜならそれは非常に難しい問題なので)、**ユーザーのニーズに合わせてカスタマイズでき、誰でも容易に機能拡張が可能なPlanning開発プラットフォームを提供すること** に設定されています。我々が提供するプラットフォームが様々なニーズに対する拡張性を獲得した結果、最終的に多くの複雑なユースケースが解決できるようになると信じています。 + +この方針を明確にするため、以下に Goal と Non-Goal をリスト化します。 + +**Goals:** + +- **自動運転の走行に必要な最低限の基本機能を持つこと** + - Planning Componentは機能拡張以前に、自動運転のために必須な機能を提供する必要があります。これは走る、止まる、曲がるといった基本計画に加え、比較的安全な状況での車線変更や信号停止などの機能が含まれます。 +- **提供機能はモジュール化されており、誰でも機能の再利用や拡張が可能であること** + - これはユーザーが期待するODDに対し、拡張機能によって対応できることを意味します。プラグインのような形で誰でも機能拡張ができれば、それぞれのニーズ(Lv4/Lv2自動運転、公道/私道走行、大型車両、小型ロボットなど)にあったシステムが提供できます。 + - ユーザーのニーズには、純粋な自動運転としての性能ではなく、限定されたODD(例えば障害物のない管理された私道)において可能な限り消費電力を下げることなども含まれます。この場合はモジュールをdisableさせることによって、この場合はODDを限定させる代わりに、処理負荷を下げられるようにする必要があります。 +- **人間のオペレータによって能力が拡張できること** + - オペレータによる補助も機能拡張の一つです。これにより、非常に複雑で困難なユースケースにおいても、人間の補助という機能拡張で対応できることを意味します。ここで具体的なオペレータの種類は定義しません。研究フェーズにおいては車に同乗している人かもしれませんし、自動運転サービス提供者にとっては非常時にのみ繋がる遠隔オペレータかもしれません。 + + +**Non-goals:** + +Planning Componentは third-partyのモジュールによって機能拡張されることを想定しています。したがって、以下はAutowareのPlanning Component単体の目標から除外されます。 + +- ユーザーが必要とする機能の全てをAutoware単独で提供すること +- 自動運転としての完全な機能と性能 +- 人間の性能を常に上回る性能 +- 「絶対に衝突しない」という機能 + +なお、「絶対に衝突しない」といった性能は現在の目標ではありませんが、外部モジュールとの連携や将来の強化によってそのような状態を達成できるようなアーキテクチャを作成することは我々の目標です。そしてこれらの要求は自動運転プラットフォームの視点から来ているものであり、一般的な自動運転システムにおけるPlanning Componentへの要求としては一般的では無いかもしれません。 + +<!-- ## Requirements + +WIP + +## Assumptions + +WIP --> + +## High level design + +このダイアグラムはPlanning Componentのハイレベルなアーキテクチャを示している。なお、これは理想的なハイレベルデザインであり、現時点での実装がこれに従っていないこともあることに注意する。実際の詳細な実装は後半を参照のこと。 + +<!--  --> + + +Planning コンポーネントはいくつかのサブコンポーネントからなります。 + +- **Mission Planning**: 地図情報をもとに、自動運転ミッションの設定や現在位置からゴールまでのルートを計算を行います。 +- **Planning Modules**: 定められたミッションに対し、目標軌道やウインカーなどの自車の振る舞いの計画を行います。このサブコンポーネントは機能を担当するいくつかのモジュールから成ります。これらのモジュールは便宜上、BehaviorとMotionの2つに分けられています。 + - **Behavior Planner**: 交通ルールや安全を考慮して適切な経路を計算します。 + - **Motion Planner**: Behavior Plannerと連携し、車両運動や乗り心地を考慮した目標軌道を計算します。 +- **Validation**: 計算された目標軌道を検証し、安全性の担保や緊急時の振る舞いを担います。 + + +ここでは microautonomy アーキテクチャに従い、モジュール型のシステムフレームワークを採用しています。planningの機能はモジュールとして実装され、これらのモジュールは与えられたユースケースに応じて動的/静的にload/unloadされます。これらには例えば、レーンチェンジ、交差点、横断歩道モジュールなどのモジュールが含まれています。 + +### Remarkable points + +このハイレベルデザインにおいて、Goalsに対する重要な設計として、以下を挙げます。 + +#### Modulation of each function + +ルート生成や車線変更や交差点、横断歩道などPlanningに必要な機能はモジュールとして管理されます。これらのモジュールに対してはある程度共通化されたインターフェースが提供され、それに従うことによって誰でもモジュールの追加や拡張を行うことができます。詳細なインターフェースは後述。 + + +#### Separation of Mission Planning sub-component + +Mission Planningの役割は、FMS(Fleet Management System)などの既存サービスの代替になるものです。ハイレベルで定義されたMission Planningのインターフェースに従うことにより、これらthird-party機能との連携を容易に行うことができます。 + +#### Separation of Validation sub-component + +誰でも容易に拡張できるというPlanning Componentの性質の背反として、全ての機能それぞれにおいて期待されるレベルの安全性を担保することは困難です。PlanningのValidation機能は実際に経路計画などを行うモジュールからは分離して管理され、モジュールに任意の変更があった場合にも一定のレベルの安全を担保できるように設計されています。 + +#### Interface for HMI (Human Machine Interface) + + +Human Machine Interfaceとの連携は、人間オペレータとの連携を円滑に行うために必要不可欠なものです。このComponent間のインターフェースを介して、同乗オペレータや遠隔監視システムとの連携を可能にします。 + + + +#### Trade-offs for the separation of planning and other components + +Autowareの全体設計の話ではあるが、Planningを孤立したComponentとして設計することにおいても注意するべきトレードオフが存在します。planning、perception、localization、controlなどのコンポーネントを分離して開発することで、サードパーティ製のコンポーネントとの連携が容易になります。しかし、ここではパフォーマンスと拡張性の間にトレードオフがあります。例えば、perception コンポーネントは理想的には planning コンポーネントが必要とするオブジェクトだけを認識すれば十分ですが、コンポーネントを分離することでそのような密接なコミュニケーションが難しくなり、不要なオブジェクトに対しても処理を実行する必要があります。また、計画と制御を分離すると、計画時に車両の運動性能を考慮することが難しくなるという性能面の欠点があります。これを補うためには、インターフェースの情報量を増やすか、計算負荷を増やすなど対応が必要になります。 + + +## How to extend/corporate with new features (WIP) + +Planning Componentのデザインの最も重要な機能の一つが、外部モジュールとの連携です。以下の図に示すように外部の機能を組み込む際にはいくつかの方法があります。 + + + + + + +### Planning Componentに新たなモジュールを追加する + +ユーザーはモジュールとして作成されたPlanningの機能を置き換えたり、機能追加をすることができます。これは最も一般的な機能の拡張方法です。これによって、求めるODDにおいて不足している機能を追加したり、逆に既存の機能をよりシンプルなものに変更したりすることができます。 + +ただし、この機能追加を行うためには、各モジュールのインターフェースが適切に整理されている必要があります。2023.11現在ではこのような理想的なモジュールの仕組みは提供されておらず、いくつかの制限を含んでいます。詳細は Reference Implementationの [How to add new modules in the current implementation](#how-to-add-new-modules-in-the-current-implementation) を確認してください。 + + +### Planningのサブコンポーネントを置き換える + +いくつかのユーザーは、サブコンポーネントレベルでの連携・拡張を行うことに興味があるでしょう。これは例えば、Mission Planningを既存のFMSサービスと置き換えたり、既存のValidation機能は使いつつ経路生成の機能を third-party製のもの置き換えるといった要求に該当します。 + +後に説明される [Internal interface in the planning component](#internal-interface-in-the-planning-component) に従えば、サブコンポーネントレベルでの連携・拡張を行うことが可能です。既存のplanningの機能との複雑な連携はできませんが、一部のplanning componentの機能と外部モジュールとの連携が可能に成ります。 + + +### Planning Component全体を置き換える + +自動運転のPlanningシステムを開発している企業や研究室などは、自社のPlanning製品をAutowareのPerceptionやControlモジュールと連携させ、自動運転システム全体の評価を行うことに関心があるでしょう。これはPlanning全体を置き換えることによって可能となります。Component間で定義される、おそらく最も堅牢で安定したインターフェースに従えば簡単に置き換えが可能です。ただし、既存のplanningモジュールとの連携はできません。 + + +## Component interface + +This section describes the inputs and outputs of the Planning Component and of its internal modules. See the [Planning Component Interface](../../autoware-interfaces/components/planning.md) page for the current implementation. + +### Input to the planning component + +- **From Map** + - Vector map: Contains all static information about the environment, including lane connection information for route planning, lane geometry for generating a reference path, and traffic rule-related information. +- **From Perception** + - Detected object information: Provides real-time information about objects that cannot be known in advance, such as pedestrians and other vehicles. The Planning Component plans maneuvers to avoid collisions with these objects. + - Detected obstacle information: Supplies real-time information about the location of obstacles, which is more primitive than Detected Object and used for emergency stops and other safety measures. + - Occupancy map information: Offers real-time information about the presence of pedestrians and other vehicles and occluded area information. + - Traffic light recognition result: Provides the current state of each traffic light in real time. The Planning Component extracts relevant information for the planned path and determines whether to stop at intersections. +- **From Localization** + - Vehicle motion information: Includes the ego vehicle's position, velocity, acceleration, and other motion-related data. +- **From System** + - Operation mode: Indicates whether the vehicle is operating in Autonomous mode. +- **From Human Machine Interface (HMI)** + - Feature execution: Allows for executing/authorizing autonomous driving operations, such as lane changes or entering intersections, by human operators. +- **From API Layer** + - Goal: Represents the final position that the Planning Component aims to reach. + - Checkpoint: Represents a midpoint along the route to the destination. This is used during route calculation. + - Velocity limit: Sets the maximum speed limit for the vehicle. + +### Output from the planning component + +- **To Control** + - Trajectory: Provides a smooth sequence of pose, twist, and acceleration that the Control Component must follow. The trajectory is typically 10 seconds long with a 0.1-second resolution. + - Turn Signals: Controls the vehicle's turn indicators, such as right, left, hazard, etc. based on the planned maneuvers. +- **To System** + - Diagnostics: Reports the state of the Planning Component, indicating whether the processing is running correctly and whether a safe plan is being generated. +- **To Human Machine Interface (HMI)** + - Feature execution availability: Indicates the status of operations that can be executed or are required, such as lane changes or entering intersections. + - Trajectory candidate: Shows the potential trajectory that will be executed after the user's execution. +- **To API Layer** + - Planning factors: Provides information about the reasoning behind the current planning behavior. This may include the position of target objects to avoid, obstacles that led to the decision to stop, and other relevant information. + +### Internal interface in the planning component + +- **Mission Planning to Scenario Planning** + - Route: Offers guidance for the path that needs to be followed from the starting point to the destination. This path is determined based on information such as lane IDs defined on the map. At the route level, it doesn't explicitly indicate which specific lanes to take, and the route can contain multiple lanes. +- **Behavior Planning to Motion Planning** + - Path: Provides a rough position and velocity to be followed by the vehicle. These path points are usually defined with an interval of about 1 meter. Although other interval distances are possible, it may impact the precision or performance of the planning component. + - Drivable area: Defines regions where the vehicle can drive, such as within lanes or physically drivable areas. It assumes that the motion planner will calculate the final trajectory within this defined area. +- **Scenario Planning to Validation** + - Trajectory: Defines the desired positions, velocities, and accelerations which the Control Component will try to follow. Trajectory points are defined at intervals of approximately 0.1 seconds based on the trajectory velocities. +- **Validation to Control Component** + - Trajectory: Same as above but with some additional safety considerations. + + + +## Detailed design + +### Supported features + +| Feature | Description | Requirements | Figure | +| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| Route Planning | Plan route from the ego vehicle position to the destination.<br> <br> Reference implementation is in [Mission Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/mission_planner/), enabled by launching the `mission_planner` node. | - Lanelet map (driving lanelets) |  | +| Path Planning from Route | Plan path to be followed from the given route. <br> <br> Reference implementation is in [Behavior Path Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/). | - Lanelet map (driving lanelets) |  | +| Obstacle Avoidance | Plan path to avoid obstacles by steering operation. <br> <br> Reference implementation is in [Avoidance](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/docs/behavior_path_planner_avoidance_design/), [Obstacle Avoidance Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_avoidance_planner/). Enable flag in parameter: `launch obstacle_avoidance_planner true` | - objects information |  | +| Path Smoothing | Plan path to achieve smooth steering. <br> <br> Reference implementation is in [Obstacle Avoidance Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_avoidance_planner/). | - Lanelet map (driving lanelet) |  | +| Narrow Space Driving | Plan path to drive within the drivable area. Furthermore, when it is not possible to drive within the drivable area, stop the vehicle to avoid exiting the drivable area. <br> <br> Reference implementation is in [Obstacle Avoidance Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_avoidance_planner/). | - Lanelet map (high-precision lane boundaries) |  | +| Lane Change | Plan path for lane change to reach the destination. <br> <br> Reference implementation is in [Lane Change](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/docs/behavior_path_planner_lane_change_design/).. Enable flag in both parameters: | - Lanelet map (driving lanelets) |  | +| Pull Over | Plan path for pull over to park at the road shoulder. <br> <br> Reference implementation is in [Goal Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/docs/behavior_path_planner_goal_planner_design/). | - Lanelet map (shoulder lane) |  | +| Pull Out | Plan path for pull over to start from the road shoulder. <br> <br> Reference implementation is in [Pull Out Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/docs/behavior_path_planner_pull_out_design/). | - Lanelet map (shoulder lane) |  | +| Path Shift | Plan path in lateral direction in response to external instructions. <br> <br> Reference implementation is in [Side Shift Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/docs/behavior_path_planner_side_shift_design/). | - None |  | +| Obstacle Stop | Plan velocity to stop for an obstacle on the path. <br> <br> Reference implementation is in [Obstacle Stop Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_stop_planner/), [Obstacle Cruise Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_cruise_planner/). `launch obstacle_stop_planner` and enable flag: `TODO`, `launch obstacle_cruise_planner` and enable flag: `TODO` | - objects information |  | +| Obstacle Deceleration | Plan velocity to decelerate for an obstacle located around the path. <br> <br> Reference implementation is in [Obstacle Stop Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_stop_planner/), [Obstacle Cruise Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_cruise_planner/). | - objects information |  | +| Adaptive Cruise Control | Plan velocity to follow the vehicle driving in front of the ego vehicle. <br> <br> Reference implementation is in [Obstacle Stop Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_stop_planner/), [Obstacle Cruise Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_cruise_planner/). | - objects information |  | +| Decelerate for cut-in vehicles | Plan velocity to avoid a risk for cutting-in vehicle to ego lane. <br> <br> Reference implementation is in [Obstacle Cruise Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_cruise_planner/). | - objects information |  | +| Surround Check at starting | Plan velocity to prevent moving when an obstacle exists around the vehicle. <br> <br> Reference implementation is in [Surround Obstacle Checker](https://autowarefoundation.github.io/autoware.universe/main/planning/surround_obstacle_checker/). Enable flag in parameter: `use_surround_obstacle_check true` in [tier4_planning_component.launch.xml](https://github.com/autowarefoundation/autoware_launch/blob/2850d7f4e20b173fde2183d5323debbe0067a990/autoware_launch/launch/components/tier4_planning_component.launch.xml#L8) | - objects information |  | +| Curve Deceleration | Plan velocity to decelerate the speed on a curve. <br> <br> Reference implementation is in [Motion Velocity Smoother](https://autowarefoundation.github.io/autoware.universe/main/planning/motion_velocity_smoother/). | - None |  | +| Curve Deceleration for Obstacle | Plan velocity to decelerate the speed on a curve for a risk of obstacle collision around the path. <br> <br> Reference implementation is in [Obstacle Velocity Limiter](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_velocity_limiter/). | - objects information <br> - Lanelet map (static obstacle) |  | +| Crosswalk | Plan velocity to stop or decelerate for pedestrians approaching or walking on a crosswalk. <br> <br> Reference implementation is in [Crosswalk Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_crosswalk_module/docs/crosswalk-design/). | - objects information <br> - Lanelet map (pedestrian crossing) |  | +| Intersection Oncoming Vehicle Check | Plan velocity for turning right/left at intersection to avoid a risk with oncoming other vehicles. <br> <br> Reference implementation is in [Intersection Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_intersection_module/docs/intersection-design/). | - objects information <br> - Lanelet map (intersection lane and yield lane) |  | +| Intersection Blind Spot Check | Plan velocity for turning right/left at intersection to avoid a risk with other vehicles or motorcycles coming from behind blind spot. <br> <br> Reference implementation is in [Intersection Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_intersection_module/docs/intersection-design/). | - objects information <br> - Lanelet map (intersection lane) |  | +| Intersection Occlusion Check | Plan velocity for turning right/left at intersection to avoid a risk with the possibility of coming vehicles from occlusion area. <br> <br> Reference implementation is in [Intersection Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_intersection_module/docs/intersection-design/). | - objects information <br> - Lanelet map (intersection lane) |  | +| Intersection Traffic Jam Detection | Plan velocity for intersection not to enter the intersection when a vehicle is stopped ahead for a traffic jam. <br> <br> Reference implementation is in [Intersection Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_intersection_module/docs/intersection-design/). | - objects information <br> - Lanelet map (intersection lane) |  | +| Traffic Light | Plan velocity for intersection according to a traffic light signal. <br> <br> Reference implementation is in [Traffic Light Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_traffic_light_module/docs/traffic-light-design/). | - Traffic light color information |  | +| Run-out Check | Plan velocity to decelerate for the possibility of nearby objects running out into the path. <br> <br> Reference implementation is in [Run Out Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_run_out_module/docs/run-out-design/). | - objects information |  | +| Stop Line | Plan velocity to stop at a stop line. <br> <br> Reference implementation is in [Stop Line Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_stop_line_module/docs/stop-line-design/). | - Lanelet map (stop line) |  | +| Occlusion Spot Check | Plan velocity to decelerate for objects running out from occlusion area, for example, from behind a large vehicle. <br> <br> Reference implementation is in [Occlusion Spot Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_occlusion_spot_module/docs/occlusion-spot-design/). | - objects information <br> - Lanelet map (private/public lane) |  | +| No Stop Area | Plan velocity not to stop in areas where stopping is prohibited, such as in front of the fire station entrance. <br> <br> Reference implementation is in [No Stopping Area Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_no_stopping_area_module/docs/no-stopping-area-design/). | - Lanelet map (no stopping area) |  | +| Merge from Private Area to Public Road | Plan velocity for entering the public road from a private driveway to avoid a risk of collision with pedestrians or other vehicles. <br> <br> Reference implementation is in [Merge from Private Area Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_intersection_module/docs/merge-from-private-design/). | - objects information <br> - Lanelet map (private/public lane) | WIP | +| Speed Bump | Plan velocity to decelerate for speed bumps. <br> <br> Reference implementation is in [Speed Bump Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_speed_bump_module/docs/speed-bump-design/). | - Lanelet map (speed bump) |  | +| Detection Area | Plan velocity to stop at the corresponding stop when an object exist in the designated detection area. <br> <br> Reference implementation is in [Detection Area Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_detection_area_module/docs/detection-area-design/). | - Lanelet map (detection area) |  | +| Out of ODD area | Plan velocity to stop before exiting the area designated by ODD (Operational Design Domain). <br> <br> Reference implementation is in (WIP). | - Lanelet map (invalid lanelet) | WIP | +| Collision Detection when deviating from lane | Plan velocity to avoid conflict with other vehicles driving in the another lane when the ego vehicle is deviating from own lane. <br> <br> Reference implementation is in [Out of Lane Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_out_of_lane_module/docs/out-of-lane-design/). | - objects information <br> - Lanelet map (driving lane) | WIP | +| Parking | Plan path and velocity for given goal in parking area. <br> <br> Reference implementation is in [Free Space Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/freespace_planner/). | - objects information <br> - Lanelet map (parking area) |  | +| Autonomous Emergency Braking (AEB) | Perform an emergency stop if a collision with an object ahead is anticipated. It is noted that this function is expected as a final safety layer, and this should work even in the event of failures in the Localization or Perception system. <br> <br> Reference implementation is in [Out of Lane Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_out_of_lane_module/docs/out-of-lane-design/). | - Primitive objects |  | +| Minimum Risk Maneuver (MRM) | Provide appropriate MRM (Minimum Risk Maneuver) instructions when a hazardous event occurs. For example, when a sensor trouble found, send an instruction for emergency braking, moderate stop, or pulling over to the shoulder, depending on the severity of the situation. <br> <br> Reference implementation is in TODO | - TODO | WIP | +| Trajectory Validation | Check the planned trajectory is safe. If it is unsafe, take appropriate action, such as modify the trajectory, stop sending the trajectory or report to the autonomous driving system. <br> <br> Reference implementation is in [Planning Validator](https://autowarefoundation.github.io/autoware.universe/main/planning/planning_validator/). | - None |  | +| Running Lane Map Generation | Generate lane map from localization data recorded in manual driving. <br> <br> Reference implementation is in WIP | - None | WIP | +| Running Lane Optimization | Optimize the centerline (reference path) of the map to make it smooth considering the vehicle kinematics. <br> <br> Reference implementation is in [Static Centerline Optimizer](https://autowarefoundation.github.io/autoware.universe/main/planning/static_centerline_optimizer/). | - Lanelet map (driving lanes) | WIP | + +<!--  --> + +### Reference Implementation + +The following diagram describes the reference implementation of the Planning component. By adding new modules or extending the functionalities, various ODDs can be supported. + +_Note that some implementation does not adhere to the high-level architecture design due to the difficulties of the implementation and require updating._ + +ハイレベルなデザインと比較したときの重要な違いは、「シナリオレイヤーの導入」と「behavior/motionの明確な分離」です。これらは現時点での性能や実装的な課題から導入されています。これらをハイレベルなデザインとして定義するか、それとも実装の一部として改良していくかは議論の必要があります。 + + + + + +For more details, please refer to the design documents in each package. + +- [_mission_planner_](https://autowarefoundation.github.io/autoware.universe/main/planning/mission_planner/): calculate route from start to goal based on the map information. +- [_behavior_path_planner_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/): calculates path and drivable area based on the traffic rules. + - [_lane_following_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/#lane-following) + - [_lane_change_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/#lane-change) + - [_avoidance_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/#avoidance) + - [_pull_over_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/#pull-over) + - [_pull_out_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/#pull-out) + - _side_shift_ +- [_behavior_velocity_planner_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_planner/): calculates max speed based on the traffic rules. + - [_detection_area_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_detection_area_module/docs/detection-area-design/) + - [_blind_spot_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_blind_spot_module/docs/blind-spot-design/) + - [_cross_walk_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_crosswalk_module/docs/crosswalk-design/) + - [_stop_line_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_stop_line_module/docs/stop-line-design/) + - [_traffic_light_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_traffic_light_module/docs/traffic-light-design/) + - [_intersection_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_intersection_module/docs/intersection-design/) + - [_no_stopping_area_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_no_stopping_area_module/docs/no-stopping-area-design/) + - [_virtual_traffic_light_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_virtual_traffic_light_module/docs/virtual-traffic-light-design/) + - [_occlusion_spot_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_occlusion_spot_module/docs/occlusion-spot-design/) + - [_run_out_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_run_out_module/docs/run-out-design/) +- [_obstacle_avoidance_planner_](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_avoidance_planner/): calculate path shape under obstacle and drivable area constraints +- [_surround_obstacle_checker_](https://autowarefoundation.github.io/autoware.universe/main/planning/surround_obstacle_checker/): keeps the vehicle being stopped when there are obstacles around the ego-vehicle. It works only when the vehicle is stopped. +- [_obstacle_stop_planner_](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_stop_planner/): When there are obstacles on or near the trajectory, it calculates the maximum velocity of the trajectory points depending on the situation: stopping, slowing down, or adaptive cruise (following the car). + - [_stop_](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_stop_planner/#obstacle-stop-planner_1) + - [_slow_down_](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_stop_planner/#slow-down-planner) + - [_adaptive_cruise_](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_stop_planner/#adaptive-cruise-controller) +- [_costmap_generator_](https://autowarefoundation.github.io/autoware.universe/main/planning/costmap_generator/): generates a costmap for path generation from dynamic objects and lane information. +- [_freespace_planner_](https://autowarefoundation.github.io/autoware.universe/main/planning/freespace_planner/): calculates trajectory considering the feasibility (e.g. curvature) for the freespace scene. Algorithms are described [here](https://autowarefoundation.github.io/autoware.universe/main/planning/freespace_planning_algorithms/). +- _scenario_selector_ : chooses a trajectory according to the current scenario. +- [_external_velocity_limit_selector_](https://autowarefoundation.github.io/autoware.universe/main/planning/external_velocity_limit_selector/): takes an appropriate velocity limit from multiple candidates. +- [_motion_velocity_smoother_](https://autowarefoundation.github.io/autoware.universe/main/planning/motion_velocity_smoother/): calculates final velocity considering velocity, acceleration, and jerk constraints. + + +### Important information in the current implementation + +#### Introducing the Scenario Planning layer +There are different requirements for interfaces between driving in well-structured lanes and driving in a free-space area like a parking lot. For example, while Lane Driving can handle routes with map IDs, this is not appropriate for planning in free space. The mechanism that switches planning sub-components at the scenario level (Lane Driving, Parking, etc) enables a flexible design of the interface, however, it has a drawbacks of the reuse of modules across different scenarios. + +#### Separation of Behavior and Motion +One of the classic approach to Planning involves dividing it into "Behavior", which decides the action, and "Motion", which determines the final movement. However, this separation implies a trade-off with performance, as performance tends to degrade with increasing separation of functions. For example, Behavior needs to make decisions without prior knowledge of the computations that Motion will eventually perform, which generally results in conservative decision-making. On the other hand, if behavior and motion are integrated, motion performance and decision-making become interdependent, creating challenges in terms of expandability, such as when you wish to extend only the decision-making function to follow a regional traffic rules. + +To understand this background, this [previously discussed document](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/main/docs/design/software_architecture/Planning/DesignRationale.md) may be useful. + +### How to add new modules in the current implementation + +現時点の実装でもモジュールレベルの機能の追加は可能ですが、全ての機能に対して統一的なインターフェースは提供されていません。 + + +- Replace with scenario layer. +- Add new modules in behavior_velocity_planner or behavior_path_palnner +- Add a new ros node in the motion planning + +### Important Parameters + +| Package | Parameter | Type | Description | +| ---------------------------- | ------------------------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------ | +| `obstacle_stop_planner` | `stop_planner.stop_position.max_longitudinal_margin` | double | distance between the ego and the front vehicle when stopping (when `cruise_planner_type:=obstacle_stop_planner`) | +| `obstacle_cruise_planner` | `common.safe_distance_margin` | double | distance between the ego and the front vehicle when stopping (when `cruise_planner_type:=obstacle_cruise_planner`) | +| `behavior_path_planner` | `avoidance.avoidance.lateral.lateral_collision_margin` | double | minimum lateral margin to obstacle on avoidance | +| `behavior_path_planner` | `avoidance.avoidance.lateral.lateral_collision_safety_buffer` | double | additional lateral margin to obstacle if possible on avoidance | +| `obstacle_avoidance_planner` | `option.enable_outside_drivable_area_stop` | bool | If set true, a stop point will be inserted before the path footprint is outside the drivable area. | + +### Notation + +#### [1] self-crossing road and overlapped + +To support the self-crossing road and overlapped road in the opposite direction, each planning module has to meet the [specifications](https://autowarefoundation.github.io/autoware.universe/main/common/motion_utils/) + +Currently, the supported modules are as follows. + +- lane_following (in behavior_path_planner) +- detection_area (in behavior_velocity_planner) +- stop_line (in behavior_velocity_planner) +- virtual_traffic_light (in behavior_velocity_planner) +- obstacle_avoidance_planner +- obstacle_stop_planner +- motion_velocity_smoother + +#### [2] Size of Path Points + +Some functions do not support paths with only one point. Therefore, each modules should generate the path with more than two path points. From 62a5370e7fe070ffa2e3e348038ea00482849e52 Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Sun, 19 Nov 2023 16:53:16 +0900 Subject: [PATCH 14/19] update Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- ...mp.svg => planning-diagram-tmp.drawio.svg} | 294 +++-- ...-implementation-add-new-modules.drawio.svg | 1116 +++++++++++++++++ .../planning/index-update.md | 110 +- 3 files changed, 1369 insertions(+), 151 deletions(-) rename docs/design/autoware-architecture/planning/image/{planning-diagram.drawio-tmp.svg => planning-diagram-tmp.drawio.svg} (81%) create mode 100644 docs/design/autoware-architecture/planning/image/reference-implementation-add-new-modules.drawio.svg diff --git a/docs/design/autoware-architecture/planning/image/planning-diagram.drawio-tmp.svg b/docs/design/autoware-architecture/planning/image/planning-diagram-tmp.drawio.svg similarity index 81% rename from docs/design/autoware-architecture/planning/image/planning-diagram.drawio-tmp.svg rename to docs/design/autoware-architecture/planning/image/planning-diagram-tmp.drawio.svg index 8ffebd0ffb6..a0bf68c99c2 100644 --- a/docs/design/autoware-architecture/planning/image/planning-diagram.drawio-tmp.svg +++ b/docs/design/autoware-architecture/planning/image/planning-diagram-tmp.drawio.svg @@ -1,4 +1,4 @@ -<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1521px" height="2091px" viewBox="-0.5 -0.5 1521 2091" content="<mxfile><diagram id="8qt1-HtFgWOiWtJ-FPd8" name="planning (v0.13.0)">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</diagram></mxfile>"> +<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1682px" height="2091px" viewBox="-0.5 -0.5 1682 2091" content="<mxfile><diagram id="8qt1-HtFgWOiWtJ-FPd8" name="planning (v0.13.0)">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</diagram></mxfile>"> <defs/> <g> <rect x="470" y="140" width="850" height="1880" fill="#fffdf5" stroke="rgb(0, 0, 0)" pointer-events="all"/> @@ -25,10 +25,10 @@ </text> </switch> </g> - <path d="M 895 260 L 895 310 L 700 310 L 700 438.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 895 260 L 895 310 L 699.96 310 L 700 438.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 700 445.53 L 695 435.53 L 700 438.03 L 705 435.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 895 260 L 895 310 L 980 310 L 980 593.57 L 1028.03 593.51" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 1035.53 593.51 L 1025.53 598.52 L 1028.03 593.51 L 1025.52 588.52 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 895 260 L 895 310 L 979.96 310 L 979.96 593.48 L 1028.03 593.5" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1035.53 593.5 L 1025.53 598.49 L 1028.03 593.5 L 1025.53 588.49 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> @@ -64,12 +64,12 @@ </switch> </g> </a> - <path d="M 700 660 L 700 708.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 700 715.53 L 695 705.53 L 700 708.03 L 705 705.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 700 660 L 700 695.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 700 702.53 L 695 692.53 L 700 695.03 L 705 692.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 690px; margin-left: 700px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 683px; margin-left: 700px;"> <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> path_with_lane_id @@ -77,7 +77,7 @@ </div> </div> </foreignObject> - <text x="700" y="693" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="700" y="687" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> path_with_lane_id </text> </switch> @@ -85,12 +85,12 @@ <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/behavior_path_planner"> <rect x="590" y="450" width="220" height="210" rx="10.5" ry="10.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> </a> - <path d="M 700 1090 L 700 1208.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 700 1097 L 700 1208.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 700 1215.53 L 695 1205.53 L 700 1208.03 L 705 1205.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1150px; margin-left: 700px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1154px; margin-left: 700px;"> <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> path @@ -98,20 +98,20 @@ </div> </div> </foreignObject> - <text x="700" y="1153" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="700" y="1157" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> path </text> </switch> </g> <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/behavior_velocity_planner"> - <rect x="590" y="720" width="220" height="370" rx="8.8" ry="8.8" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <rect x="590" y="707" width="220" height="390" rx="8.8" ry="8.8" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> </a> <path d="M 700 1270 L 700 1298.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 700 1305.53 L 695 1295.53 L 700 1298.03 L 705 1295.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1281px; margin-left: 701px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1282px; margin-left: 701px;"> <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> Trajectory @@ -182,12 +182,12 @@ </switch> </g> </a> - <path d="M 700 1540 L 700 1630 L 810 1630 L 810 1668.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 810 1675.53 L 805 1665.53 L 810 1668.03 L 815 1665.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 700 1540 L 699.96 1630 L 809.96 1630 L 809.99 1668.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 810 1675.53 L 804.99 1665.53 L 809.99 1668.03 L 814.99 1665.52 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1631px; margin-left: 763px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1630px; margin-left: 763px;"> <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> Trajectory @@ -245,7 +245,7 @@ <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1900px; margin-left: 896px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1900px; margin-left: 895px;"> <div data-drawio-colors="color: #666666; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(102, 102, 102); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> <font color="#000000"> @@ -255,7 +255,7 @@ </div> </div> </foreignObject> - <text x="896" y="1903" fill="#666666" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="895" y="1904" fill="#666666" font-family="Helvetica" font-size="11px" text-anchor="middle"> Trajectory </text> </switch> @@ -281,12 +281,12 @@ </switch> </g> </a> - <path d="M 1110 617 L 1110 1630 L 980 1630 L 980 1668.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 980 1675.53 L 975 1665.53 L 980 1668.03 L 985 1665.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 1109.96 617 L 1109.96 1630 L 979.96 1630 L 979.99 1668.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 980 1675.53 L 974.99 1665.53 L 979.99 1668.03 L 984.99 1665.52 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1630px; margin-left: 1058px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1629px; margin-left: 1057px;"> <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> Trajectory @@ -294,7 +294,7 @@ </div> </div> </foreignObject> - <text x="1058" y="1633" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="1057" y="1633" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> Trajectory </text> </switch> @@ -323,7 +323,7 @@ <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 521px; margin-left: 1110px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 522px; margin-left: 1110px;"> <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> occupancy_grid @@ -402,7 +402,7 @@ <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 86px; margin-left: 840px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 85px; margin-left: 839px;"> <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> goal @@ -410,12 +410,12 @@ </div> </div> </foreignObject> - <text x="840" y="89" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="839" y="88" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> goal </text> </switch> </g> - <path d="M 440 240 L 440 235 L 606.76 235" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 440 240 L 439.96 234.96 L 606.76 235" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 612.76 235 L 604.76 239 L 606.76 235 L 604.76 231 Z" fill="#b83232" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <rect x="600" y="1425" width="60" height="50" fill="none" stroke="none" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> @@ -548,9 +548,9 @@ </text> </switch> </g> - <path d="M 440 240 L 440 905 L 581.76 905" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 587.76 905 L 579.76 909 L 581.76 905 L 579.76 901 Z" fill="#b83232" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> - <path d="M 440 240 L 440 559.57 L 581.1 559.62" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 440 240 L 439.96 902 L 581.76 902" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 587.76 902 L 579.76 906 L 581.76 902 L 579.76 898 Z" fill="#b83232" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 440 240 L 439.96 559.57 L 581.1 559.62" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 587.1 559.62 L 579.1 563.62 L 581.1 559.62 L 579.11 555.62 Z" fill="#b83232" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <rect x="470" y="2050" width="850" height="40" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> @@ -569,8 +569,8 @@ </text> </switch> </g> - <path d="M 1410 311 L 1360 311 L 1360 412.57 L 1188.24 412.5" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 1182.24 412.5 L 1190.24 408.5 L 1188.24 412.5 L 1190.23 416.5 Z" fill="#b83232" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 1410 311 L 1360.04 311.04 L 1360.04 412.52 L 1188.24 412.5" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1182.24 412.5 L 1190.24 408.5 L 1188.24 412.5 L 1190.24 416.5 Z" fill="#b83232" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> @@ -587,12 +587,12 @@ </text> </switch> </g> - <path d="M 249 501 L 436 501.82 C 436.02 496.62 444.02 496.66 444 501.86 L 444 501.86 L 581.76 502.46" fill="none" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 249 501 L 439.96 501.84 L 439.98 501.84 L 581.76 502.46" fill="none" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 587.76 502.49 L 579.75 506.45 L 581.76 502.46 L 579.78 498.46 Z" fill="#7cab62" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 502px; margin-left: 345px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 502px; margin-left: 344px;"> <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> Dynamic Objects @@ -600,12 +600,12 @@ </div> </div> </foreignObject> - <text x="345" y="505" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="344" y="505" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> Dynamic Objects </text> </switch> </g> - <path d="M 160 785 L 436 785.64 C 436.01 780.44 444.01 780.46 444 785.66 L 444 785.66 L 581.76 785.98" fill="none" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 160 785 L 435.96 785.64 C 435.98 780.44 443.98 780.46 443.96 785.66 L 443.96 785.66 L 581.76 785.98" fill="none" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 587.76 785.99 L 579.75 789.98 L 581.76 785.98 L 579.77 781.98 Z" fill="#7cab62" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> @@ -646,7 +646,7 @@ <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1436px; margin-left: 347px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1435px; margin-left: 347px;"> <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> Dynamic Objects @@ -659,12 +659,12 @@ </text> </switch> </g> - <path d="M 248 830 L 436 829.94 C 436 824.74 444 824.74 444 829.94 L 444 829.94 L 579.78 829.89" fill="none" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 585.78 829.89 L 577.79 833.89 L 579.78 829.89 L 577.78 825.89 Z" fill="#82b366" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 248 830 L 435.96 830 C 435.96 824.8 443.96 824.8 443.96 830 L 443.96 830 L 581.76 830" fill="none" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 587.76 830 L 579.76 834 L 581.76 830 L 579.76 826 Z" fill="#82b366" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 830px; margin-left: 326px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 829px; margin-left: 326px;"> <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> Obstacle Points @@ -682,7 +682,7 @@ <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1346px; margin-left: 328px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1346px; margin-left: 327px;"> <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> Obstacle Points @@ -690,7 +690,7 @@ </div> </div> </foreignObject> - <text x="328" y="1349" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="327" y="1349" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> Obstacle Points </text> </switch> @@ -700,7 +700,7 @@ <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1246px; margin-left: 345px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1245px; margin-left: 345px;"> <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> Dynamic Objects @@ -749,7 +749,7 @@ </text> </switch> </g> - <path d="M 440 240 L 440 1710 L 716.76 1710" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 440 240 L 439.96 1710 L 716.76 1710" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 722.76 1710 L 714.76 1714 L 716.76 1710 L 714.76 1706 Z" fill="#b83232" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <path d="M 250 1765.24 L 459.21 1766.16" fill="none" stroke="#5899db" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 465.21 1766.19 L 457.2 1770.15 L 459.21 1766.16 L 457.23 1762.15 Z" fill="#5899db" stroke="#5899db" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> @@ -764,7 +764,7 @@ </div> </div> </foreignObject> - <text x="332" y="1768" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="332" y="1767" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> vehicle_state </text> </switch> @@ -788,12 +788,12 @@ </text> </switch> </g> - <path d="M 41 608 L 436 607.64 C 436 602.44 444 602.43 444 607.63 L 444 607.63 L 581.76 607.51" fill="none" stroke="#808080" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 41 608 L 439.98 607.64 L 439.99 607.64 L 581.76 607.51" fill="none" stroke="#808080" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 587.76 607.5 L 579.77 611.51 L 581.76 607.51 L 579.76 603.51 Z" fill="#808080" stroke="#808080" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 609px; margin-left: 307px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 609px; margin-left: 308px;"> <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> approval, @@ -803,12 +803,12 @@ </div> </div> </foreignObject> - <text x="307" y="613" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="308" y="612" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> approval,... </text> </switch> </g> - <path d="M 35 970 L 436 970.72 C 436.01 965.52 444.01 965.54 444 970.74 L 444 970.74 L 581.76 970.99" fill="none" stroke="#808080" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 35 970 L 435.98 970.72 C 435.99 965.52 443.99 965.54 443.98 970.74 L 443.98 970.74 L 581.76 970.99" fill="none" stroke="#808080" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 587.76 971 L 579.76 974.98 L 581.76 970.99 L 579.77 966.98 Z" fill="#808080" stroke="#808080" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> @@ -825,7 +825,7 @@ </div> </div> </foreignObject> - <text x="341" y="969" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="341" y="968" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> external_crosswalk_states,... </text> </switch> @@ -847,12 +847,12 @@ </text> </switch> </g> - <path d="M 250 750 L 436 750 C 436 744.8 444 744.8 444 750 L 444 750 L 581.76 750" fill="none" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 250 750 L 439.97 750 L 439.98 750 L 581.76 750" fill="none" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 587.76 750 L 579.76 754 L 581.76 750 L 579.76 746 Z" fill="#7cab62" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 751px; margin-left: 330px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 750px; margin-left: 329px;"> <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> Traffic Light States @@ -860,12 +860,12 @@ </div> </div> </foreignObject> - <text x="330" y="754" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="329" y="754" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> Traffic Light States </text> </switch> </g> - <path d="M 41 1510.5 L 436 1510.14 C 436 1504.94 444 1504.93 444 1510.13 L 444 1510.13 L 581.76 1510.01" fill="none" stroke="#808080" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 41 1510.5 L 435.96 1510.14 C 435.96 1504.94 443.96 1504.93 443.96 1510.13 L 443.96 1510.13 L 581.76 1510.01" fill="none" stroke="#808080" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 587.76 1510 L 579.77 1514.01 L 581.76 1510.01 L 579.76 1506.01 Z" fill="#808080" stroke="#808080" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> @@ -905,7 +905,7 @@ <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1851px; margin-left: 302px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1850px; margin-left: 302px;"> <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> velocity_limit @@ -939,8 +939,8 @@ </text> </switch> </g> - <path d="M 1410 545 L 1360 545 L 1360 457.57 L 1188.24 457.5" fill="none" stroke="#97d077" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 1182.24 457.5 L 1190.24 453.5 L 1188.24 457.5 L 1190.23 461.5 Z" fill="#97d077" stroke="#97d077" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 1410 545 L 1360.04 544.96 L 1360.04 457.48 L 1188.24 457.5" fill="none" stroke="#97d077" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 1182.24 457.5 L 1190.24 453.5 L 1188.24 457.5 L 1190.24 461.5 Z" fill="#97d077" stroke="#97d077" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <path d="M 650 1850 L 806.76 1850" fill="none" stroke="#d6b656" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 812.76 1850 L 804.76 1854 L 806.76 1850 L 804.76 1846 Z" fill="#d6b656" stroke="#d6b656" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <rect x="530" y="1820" width="120" height="60" rx="9" ry="9" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> @@ -967,7 +967,7 @@ <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1796px; margin-left: 590px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1795px; margin-left: 590px;"> <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> velocity_limit @@ -981,7 +981,7 @@ </text> </switch> </g> - <rect x="672.5" y="525" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <rect x="672.5" y="525" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> @@ -998,7 +998,7 @@ </text> </switch> </g> - <rect x="672.5" y="557" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <rect x="672.5" y="557" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> @@ -1015,7 +1015,7 @@ </text> </switch> </g> - <rect x="672.5" y="492" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <rect x="672.5" y="492" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> @@ -1032,7 +1032,7 @@ </text> </switch> </g> - <rect x="672.5" y="460" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <rect x="672.5" y="460" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> @@ -1049,7 +1049,7 @@ </text> </switch> </g> - <rect x="672.5" y="590" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <rect x="672.5" y="590" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> @@ -1066,7 +1066,7 @@ </text> </switch> </g> - <rect x="672.5" y="622.46" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <rect x="672.5" y="622.46" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> @@ -1083,11 +1083,11 @@ </text> </switch> </g> - <rect x="672.5" y="774" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <rect x="672.5" y="755" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 787px; margin-left: 674px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 768px; margin-left: 674px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> blind_spot @@ -1095,16 +1095,16 @@ </div> </div> </foreignObject> - <text x="733" y="791" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="733" y="772" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> blind_spot </text> </switch> </g> - <rect x="672.5" y="808" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <rect x="672.5" y="789" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 821px; margin-left: 674px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 802px; margin-left: 674px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> cross_walk @@ -1112,16 +1112,16 @@ </div> </div> </foreignObject> - <text x="733" y="825" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="733" y="806" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> cross_walk </text> </switch> </g> - <rect x="672.5" y="841" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <rect x="672.5" y="822" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 854px; margin-left: 674px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 835px; margin-left: 674px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> stop_line @@ -1129,16 +1129,16 @@ </div> </div> </foreignObject> - <text x="733" y="858" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="733" y="839" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> stop_line </text> </switch> </g> - <rect x="672.5" y="876" width="120" height="24.32" rx="3.65" ry="3.65" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <rect x="672.5" y="857" width="120" height="24.32" rx="3.65" ry="3.65" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 888px; margin-left: 674px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 869px; margin-left: 674px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> traffic_light @@ -1146,16 +1146,16 @@ </div> </div> </foreignObject> - <text x="733" y="892" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="733" y="873" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> traffic_light </text> </switch> </g> - <rect x="672.5" y="909" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <rect x="672.5" y="890" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 922px; margin-left: 674px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 903px; margin-left: 674px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> intersection @@ -1163,16 +1163,16 @@ </div> </div> </foreignObject> - <text x="733" y="926" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="733" y="907" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> intersection </text> </switch> </g> - <rect x="672.5" y="740" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <rect x="672.5" y="721" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 753px; margin-left: 674px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 734px; margin-left: 674px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> detection_area @@ -1180,16 +1180,16 @@ </div> </div> </foreignObject> - <text x="733" y="757" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="733" y="738" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> detection_area </text> </switch> </g> - <rect x="672.5" y="943" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <rect x="672.5" y="924" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 956px; margin-left: 674px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 937px; margin-left: 674px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> no_stopping_area @@ -1197,16 +1197,16 @@ </div> </div> </foreignObject> - <text x="733" y="960" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="733" y="941" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> no_stopping_area </text> </switch> </g> - <rect x="672.5" y="976" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <rect x="672.5" y="957" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 989px; margin-left: 674px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 970px; margin-left: 674px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> virtual_traffic_light @@ -1214,16 +1214,16 @@ </div> </div> </foreignObject> - <text x="733" y="993" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="733" y="974" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> virtual_traffic_light </text> </switch> </g> - <rect x="672.5" y="1010" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <rect x="672.5" y="991" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1023px; margin-left: 674px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1004px; margin-left: 674px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> occlusion_spot @@ -1231,16 +1231,16 @@ </div> </div> </foreignObject> - <text x="733" y="1027" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="733" y="1008" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> occlusion_spot </text> </switch> </g> - <rect x="672.5" y="1043.95" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <rect x="672.5" y="1024.95" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1057px; margin-left: 674px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1038px; margin-left: 674px;"> <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> run_out @@ -1248,7 +1248,7 @@ </div> </div> </foreignObject> - <text x="733" y="1061" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + <text x="733" y="1042" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> run_out </text> </switch> @@ -1258,7 +1258,7 @@ <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 86px; margin-left: 920px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 85px; margin-left: 920px;"> <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> check_point @@ -1266,17 +1266,17 @@ </div> </div> </foreignObject> - <text x="920" y="89" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="920" y="88" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> check_point </text> </switch> </g> - <path d="M 250 295 L 440 295 L 440 1335 L 581.76 1335" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> - <path d="M 587.76 1335 L 579.76 1339 L 581.76 1335 L 579.76 1331 Z" fill="#b83232" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <path d="M 250 295 L 439.96 294.96 L 439.96 1335.04 L 581.76 1335" fill="none" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 587.76 1335 L 579.77 1339 L 581.76 1335 L 579.76 1331 Z" fill="#b83232" stroke="#b83232" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 270px; margin-left: 331px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 270px; margin-left: 330px;"> <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> vector_map @@ -1284,7 +1284,7 @@ </div> </div> </foreignObject> - <text x="331" y="273" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="330" y="273" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> vector_map </text> </switch> @@ -1325,12 +1325,12 @@ </text> </switch> </g> - <path d="M 250 1650.24 L 436 1650.06 C 436 1644.86 444 1644.85 444 1650.05 L 444 1650.05 L 491.76 1650.01" fill="none" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 250 1650.24 L 435.96 1650.06 C 435.95 1644.86 443.95 1644.85 443.96 1650.05 L 443.96 1650.05 L 491.76 1650.01" fill="none" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 497.76 1650 L 489.77 1654.01 L 491.76 1650.01 L 489.76 1646.01 Z" fill="#82b366" stroke="#82b366" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1651px; margin-left: 338px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1651px; margin-left: 337px;"> <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> Obstacle Points @@ -1338,17 +1338,17 @@ </div> </div> </foreignObject> - <text x="338" y="1654" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> + <text x="337" y="1654" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle"> Obstacle Points </text> </switch> </g> - <path d="M 250 1630 L 436 1630 C 436 1624.8 444 1624.8 444 1630 L 444 1630 L 491.76 1630" fill="none" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 250 1630 L 435.96 1630 C 435.96 1624.8 443.96 1624.8 443.96 1630 L 443.96 1630 L 491.76 1630" fill="none" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> <path d="M 497.76 1630 L 489.76 1634 L 491.76 1630 L 489.76 1626 Z" fill="#7cab62" stroke="#7cab62" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> <g transform="translate(-0.5 -0.5)"> <switch> <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> - <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1631px; margin-left: 351px;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1630px; margin-left: 351px;"> <div data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> Dynamic Objects @@ -1502,6 +1502,92 @@ </text> </switch> </g> + <rect x="672.5" y="1060" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1073px; margin-left: 674px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + no_drivable_lane + </div> + </div> + </div> + </foreignObject> + <text x="733" y="1077" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + no_drivable_lane + </text> + </switch> + </g> + <rect x="1400" y="0" width="280" height="170" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="1410" y="10" width="90" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 25px; margin-left: 1411px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + Legend + </div> + </div> + </div> + </foreignObject> + <text x="1455" y="29" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold"> + Legend + </text> + </switch> + </g> + <rect x="1440" y="44" width="200" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 59px; margin-left: 1441px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Component + </div> + </div> + </div> + </foreignObject> + <text x="1540" y="63" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Component + </text> + </switch> + </g> + <rect x="1440" y="84" width="200" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 99px; margin-left: 1441px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + ROS Node + </div> + </div> + </div> + </foreignObject> + <text x="1540" y="103" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + ROS Node + </text> + </switch> + </g> + <rect x="1440" y="124" width="200" height="30" rx="4.5" ry="4.5" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 139px; margin-left: 1441px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Modlue Plugin + </div> + </div> + </div> + </foreignObject> + <text x="1540" y="143" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Modlue Plugin + </text> + </switch> + </g> </g> <switch> <g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/> diff --git a/docs/design/autoware-architecture/planning/image/reference-implementation-add-new-modules.drawio.svg b/docs/design/autoware-architecture/planning/image/reference-implementation-add-new-modules.drawio.svg new file mode 100644 index 00000000000..95b32fd914e --- /dev/null +++ b/docs/design/autoware-architecture/planning/image/reference-implementation-add-new-modules.drawio.svg @@ -0,0 +1,1116 @@ +<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1548px" height="1777px" viewBox="-0.5 -0.5 1548 1777" content="<mxfile><diagram id="8qt1-HtFgWOiWtJ-FPd8" name="planning (v0.13.0)">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</diagram></mxfile>"> + <defs/> + <g> + <rect x="0" y="106" width="1200" height="1600" fill="#fffdf5" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="40" y="156" width="1120" height="90" fill="#fffceb" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="50" y="1596" width="1120" height="80" fill="#fffceb" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="40" y="306" width="390" height="1030" fill="#fffceb" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="80" y="356" width="300" height="520" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="82.5" y="906" width="297.5" height="400" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="480" y="306" width="320" height="1030" fill="#fffceb" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="490" y="316" width="90" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 331px; margin-left: 491px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + Parking Scenario + </div> + </div> + </div> + </foreignObject> + <text x="535" y="335" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold"> + Parking Scenario + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/mission_planner"> + <rect x="340" y="176" width="560" height="50" rx="7.5" ry="7.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 558px; height: 1px; padding-top: 201px; margin-left: 341px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + mission_planner + </div> + </div> + </div> + </foreignObject> + <text x="620" y="205" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + mission_planner + </text> + </switch> + </g> + </a> + <path d="M 230 546 L 230 581.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 230 588.53 L 225 578.53 L 230 581.03 L 235 578.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 570px; margin-left: 230px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + path_with_lane_id + </div> + </div> + </div> + </foreignObject> + <text x="230" y="573" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + path_with_lane_id + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/behavior_path_planner"> + <rect x="120" y="396" width="220" height="150" rx="7.5" ry="7.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + </a> + <path d="M 230 856 L 230 936.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 230 943.53 L 225 933.53 L 230 936.03 L 235 933.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 898px; margin-left: 230px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + path + </div> + </div> + </div> + </foreignObject> + <text x="230" y="901" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + path + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/behavior_velocity_planner"> + <rect x="120" y="593" width="220" height="263" rx="8.8" ry="8.8" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + </a> + <path d="M 230 988 L 230 1021.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 230 1028.53 L 225 1018.53 L 230 1021.03 L 235 1018.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1002px; margin-left: 231px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Trajectory + </div> + </div> + </div> + </foreignObject> + <text x="231" y="1005" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Trajectory + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/obstacle_avoidance_planner"> + <rect x="120" y="948" width="220" height="40" rx="6" ry="6" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 968px; margin-left: 121px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + obstacle_ + <br/> + avoidance_planner + </div> + </div> + </div> + </foreignObject> + <text x="230" y="972" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + obstacle_... + </text> + </switch> + </g> + </a> + <path d="M 230 1063 L 230 1094.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 230 1101.53 L 225 1091.53 L 230 1094.03 L 235 1091.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1085px; margin-left: 230px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Trajectory + </div> + </div> + </div> + </foreignObject> + <text x="230" y="1088" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Trajectory + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/obstacle_velocity_limiter"> + <rect x="120" y="1033" width="220" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 1048px; margin-left: 121px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + obstacle_velocity_limiter + </div> + </div> + </div> + </foreignObject> + <text x="230" y="1052" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + obstacle_velocity_limiter + </text> + </switch> + </g> + </a> + <path d="M 230 1276 L 230 1366 L 470 1366 L 470 1434.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 470 1441.53 L 465 1431.53 L 470 1434.03 L 475 1431.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1367px; margin-left: 358px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Trajectory + </div> + </div> + </div> + </foreignObject> + <text x="358" y="1370" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Trajectory + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/obstacle_stop_planner"> + <rect x="120" y="1176" width="220" height="100" rx="7" ry="7" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + </a> + <path d="M 641 1486 L 641 1506 L 640.6 1514.04" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 640.22 1521.53 L 635.73 1511.3 L 640.6 1514.04 L 645.72 1511.8 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1506px; margin-left: 641px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Trajectory + </div> + </div> + </div> + </foreignObject> + <text x="641" y="1509" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Trajectory + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/scenario_selector"> + <rect x="301" y="1446" width="680" height="40" rx="6" ry="6" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 678px; height: 1px; padding-top: 1466px; margin-left: 302px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + scenario_selector + </div> + </div> + </div> + </foreignObject> + <text x="641" y="1470" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + scenario_selector + </text> + </switch> + </g> + </a> + <path d="M 640 1566 L 640 1604.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 640 1611.53 L 635 1601.53 L 640 1604.03 L 645 1601.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1580px; margin-left: 641px;"> + <div data-drawio-colors="color: #666666; background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(102, 102, 102); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + <font color="#000000"> + Trajectory + </font> + </div> + </div> + </div> + </foreignObject> + <text x="641" y="1583" fill="#666666" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Trajectory + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/motion_velocity_smoother"> + <rect x="470" y="1526" width="340" height="40" rx="6" ry="6" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 338px; height: 1px; padding-top: 1546px; margin-left: 471px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + motion_velocity_smoother + </div> + </div> + </div> + </foreignObject> + <text x="640" y="1550" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + motion_velocity_smoother + </text> + </switch> + </g> + </a> + <path d="M 640 654 L 640 876 L 640 917.76" fill="none" stroke="#d4b455" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 640 923.76 L 636 915.76 L 640 917.76 L 644 915.76 Z" fill="#d4b455" stroke="#d4b455" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 867px; margin-left: 641px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Trajectory + </div> + </div> + </div> + </foreignObject> + <text x="641" y="870" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Trajectory + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/freespace_planner"> + <rect x="570" y="607" width="140" height="47" rx="7.05" ry="7.05" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 631px; margin-left: 571px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + freespace_planner + </div> + </div> + </div> + </foreignObject> + <text x="640" y="634" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + freespace_planner + </text> + </switch> + </g> + </a> + <path d="M 640 486 L 640 598.76" fill="none" stroke="#d4b455" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 640 604.76 L 636 596.76 L 640 598.76 L 644 596.76 Z" fill="#d4b455" stroke="#d4b455" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 542px; margin-left: 640px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + occupancy_grid + </div> + </div> + </div> + </foreignObject> + <text x="640" y="545" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + occupancy_grid + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/costmap_generator"> + <rect x="570" y="396" width="140" height="90" rx="13.5" ry="13.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 441px; margin-left: 571px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + costmap_generator + </div> + </div> + </div> + </foreignObject> + <text x="640" y="445" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + costmap_generator + </text> + </switch> + </g> + </a> + <rect x="130" y="636" width="60" height="50" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 661px; margin-left: 131px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + behavior + <br/> + velocity + <br/> + planner + </div> + </div> + </div> + </foreignObject> + <text x="160" y="665" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + behavior... + </text> + </switch> + </g> + <rect x="130" y="406" width="60" height="50" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 431px; margin-left: 131px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + behavior + <br/> + path + <br/> + planner + </div> + </div> + </div> + </foreignObject> + <text x="160" y="435" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + behavior... + </text> + </switch> + </g> + <path d="M 569 46 L 570.78 144.03" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 570.92 151.53 L 565.74 141.62 L 570.78 144.03 L 575.74 141.44 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 74px; margin-left: 570px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + goal + </div> + </div> + </div> + </foreignObject> + <text x="570" y="77" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + goal + </text> + </switch> + </g> + <rect x="130" y="1192" width="60" height="50" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 1217px; margin-left: 131px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + obstacle + <br/> + stop + <br/> + planner + </div> + </div> + </div> + </foreignObject> + <text x="160" y="1221" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + obstacle... + </text> + </switch> + </g> + <rect x="202.5" y="1218" width="120" height="18" rx="2.7" ry="2.7" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1227px; margin-left: 204px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + slow_down + </div> + </div> + </div> + </foreignObject> + <text x="263" y="1231" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + slow_down + </text> + </switch> + </g> + <rect x="202.5" y="1244" width="120" height="18" rx="2.7" ry="2.7" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1253px; margin-left: 204px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + adaptive_cruise + </div> + </div> + </div> + </foreignObject> + <text x="263" y="1257" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + adaptive_cruise + </text> + </switch> + </g> + <rect x="202.5" y="1192" width="120" height="18" rx="2.7" ry="2.7" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1201px; margin-left: 204px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + stop + </div> + </div> + </div> + </foreignObject> + <text x="263" y="1205" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + stop + </text> + </switch> + </g> + <rect x="45" y="316" width="90" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 331px; margin-left: 46px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + LaneDriving Scenario + </div> + </div> + </div> + </foreignObject> + <text x="90" y="335" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold"> + LaneDriving Sce... + </text> + </switch> + </g> + <rect x="80" y="366" width="120" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 381px; margin-left: 81px;"> + <div data-drawio-colors="color: #666666; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(102, 102, 102); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + <span style="font-weight: normal"> + <font color="#000000"> + Behavior Planning + </font> + </span> + </div> + </div> + </div> + </foreignObject> + <text x="140" y="385" fill="#666666" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold"> + Behavior Planning + </text> + </switch> + </g> + <rect x="80" y="918" width="120" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 933px; margin-left: 81px;"> + <div data-drawio-colors="color: #666666; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(102, 102, 102); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + <span style="font-weight: normal"> + <font color="#000000"> + Motion Planning + </font> + </span> + </div> + </div> + </div> + </foreignObject> + <text x="140" y="937" fill="#666666" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold"> + Motion Planning + </text> + </switch> + </g> + <rect x="0" y="1736" width="1200" height="40" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1198px; height: 1px; padding-top: 1756px; margin-left: 1px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + To Control + </div> + </div> + </div> + </foreignObject> + <text x="600" y="1760" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + To Control + </text> + </switch> + </g> + <path d="M 1135 1457 L 989.24 1456.05" fill="none" stroke="#d4b455" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 983.24 1456.01 L 991.26 1452.07 L 989.24 1456.05 L 991.21 1460.07 Z" fill="#d4b455" stroke="#d4b455" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1442px; margin-left: 1135px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + route (from mission_planner) + </div> + </div> + </div> + </foreignObject> + <text x="1135" y="1445" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + route (from mission_planner) + </text> + </switch> + </g> + <path d="M 180 1546 L 461.76 1546" fill="none" stroke="#d6b656" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 467.76 1546 L 459.76 1550 L 461.76 1546 L 459.76 1542 Z" fill="#d6b656" stroke="#d6b656" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <rect x="60" y="1516" width="120" height="60" rx="9" ry="9" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 1546px; margin-left: 61px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + external_velocity + <br/> + _limit_selector + </div> + </div> + </div> + </foreignObject> + <text x="120" y="1550" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + external_velocity... + </text> + </switch> + </g> + <path d="M 120 1406 L 120 1507.76" fill="none" stroke="#d6b656" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 120 1513.76 L 116 1505.76 L 120 1507.76 L 124 1505.76 Z" fill="#d6b656" stroke="#d6b656" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1498px; margin-left: 120px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + velocity_limit + <br/> + </div> + </div> + </div> + </foreignObject> + <text x="120" y="1501" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + velocity_l... + </text> + </switch> + </g> + <rect x="202.5" y="471" width="120" height="27.54" rx="4.13" ry="4.13" fill="#e51400" stroke="#b20000" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 485px; margin-left: 204px;"> + <div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + New Module 1 + </div> + </div> + </div> + </foreignObject> + <text x="263" y="489" fill="#ffffff" font-family="Helvetica" font-size="14px" text-anchor="middle"> + New Module 1 + </text> + </switch> + </g> + <rect x="202.5" y="503" width="120" height="27.54" rx="4.13" ry="4.13" fill="#e51400" stroke="#b20000" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 517px; margin-left: 204px;"> + <div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + New Module 2 + </div> + </div> + </div> + </foreignObject> + <text x="263" y="521" fill="#ffffff" font-family="Helvetica" font-size="14px" text-anchor="middle"> + New Module 2 + </text> + </switch> + </g> + <rect x="202.5" y="438" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 452px; margin-left: 204px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + lane_change + </div> + </div> + </div> + </foreignObject> + <text x="263" y="455" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + lane_change + </text> + </switch> + </g> + <rect x="202.5" y="406" width="120" height="27.54" rx="4.13" ry="4.13" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 420px; margin-left: 204px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + lane_following + </div> + </div> + </div> + </foreignObject> + <text x="263" y="423" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + lane_following + </text> + </switch> + </g> + <rect x="202.5" y="641" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 654px; margin-left: 204px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + blind_spot + </div> + </div> + </div> + </foreignObject> + <text x="263" y="658" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + blind_spot + </text> + </switch> + </g> + <rect x="202.5" y="675" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 688px; margin-left: 204px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + cross_walk + </div> + </div> + </div> + </foreignObject> + <text x="263" y="692" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + cross_walk + </text> + </switch> + </g> + <rect x="202.5" y="708" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 721px; margin-left: 204px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + stop_line + </div> + </div> + </div> + </foreignObject> + <text x="263" y="725" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + stop_line + </text> + </switch> + </g> + <rect x="202.5" y="743" width="120" height="24.32" rx="3.65" ry="3.65" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 755px; margin-left: 204px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + traffic_light + </div> + </div> + </div> + </foreignObject> + <text x="263" y="759" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + traffic_light + </text> + </switch> + </g> + <rect x="202.5" y="607" width="120" height="26.05" rx="3.91" ry="3.91" fill="#fad7ac" stroke="#b46504" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 620px; margin-left: 204px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + detection_area + </div> + </div> + </div> + </foreignObject> + <text x="263" y="624" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + detection_area + </text> + </switch> + </g> + <rect x="202.5" y="776" width="120" height="26.05" rx="3.91" ry="3.91" fill="#e51400" stroke="#b20000" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 789px; margin-left: 204px;"> + <div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + New Module 3 + </div> + </div> + </div> + </foreignObject> + <text x="263" y="793" fill="#ffffff" font-family="Helvetica" font-size="14px" text-anchor="middle"> + New Module 3 + </text> + </switch> + </g> + <path d="M 650 46 L 650 144.03" fill="none" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 650 151.53 L 645 141.53 L 650 144.03 L 655 141.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 74px; margin-left: 650px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + check_point + </div> + </div> + </div> + </foreignObject> + <text x="650" y="77" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + check_point + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/surround_obstacle_checker"> + <rect x="30" y="1356" width="180" height="50" rx="7.5" ry="7.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 1381px; margin-left: 31px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + surround_obstacle_checker + </div> + </div> + </div> + </foreignObject> + <text x="120" y="1385" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + surround_obstacle_checker + </text> + </switch> + </g> + </a> + <path d="M 200 1466 L 200 1496 L 120 1496" fill="none" stroke="#d6b656" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="6 6" pointer-events="stroke"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1466px; margin-left: 200px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + (from other planning modules) + </div> + </div> + </div> + </foreignObject> + <text x="200" y="1469" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + (from othe... + </text> + </switch> + </g> + <path d="M 639.89 1666 L 639.65 1722.79" fill="none" stroke="#d6b656" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 639.62 1730.29 L 634.66 1720.27 L 639.65 1722.79 L 644.66 1720.31 Z" fill="#d6b656" stroke="#d6b656" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1688px; margin-left: 640px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + <span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 11px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;"> + Trajectory + </span> + </div> + </div> + </div> + </foreignObject> + <text x="640" y="1691" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Trajectory + </text> + </switch> + </g> + <a xlink:href="https://github.com/autowarefoundation/autoware.universe/tree/main/planning/planning_validator"> + <rect x="470" y="1616" width="340" height="50" rx="7.5" ry="7.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 338px; height: 1px; padding-top: 1641px; margin-left: 471px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + planning_validator + </div> + </div> + </div> + </foreignObject> + <text x="640" y="1645" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + planning_validator + </text> + </switch> + </g> + </a> + <rect x="0" y="0" width="1200" height="50" fill="#f5f5f5" stroke="#666666" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1198px; height: 1px; padding-top: 25px; margin-left: 1px;"> + <div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + API Layer + </div> + </div> + </div> + </foreignObject> + <text x="600" y="29" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle"> + API Layer + </text> + </switch> + </g> + <rect x="45" y="166" width="90" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 181px; margin-left: 46px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + Mission Planning + </div> + </div> + </div> + </foreignObject> + <text x="90" y="185" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold"> + Mission Planning + </text> + </switch> + </g> + <rect x="70" y="1606" width="90" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 1621px; margin-left: 71px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + Validation + </div> + </div> + </div> + </foreignObject> + <text x="115" y="1625" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold"> + Validation + </text> + </switch> + </g> + <rect x="202.5" y="811.05" width="120" height="26.05" rx="3.91" ry="3.91" fill="#e51400" stroke="#b20000" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 824px; margin-left: 204px;"> + <div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + New Module 4 + </div> + </div> + </div> + </foreignObject> + <text x="263" y="828" fill="#ffffff" font-family="Helvetica" font-size="14px" text-anchor="middle"> + New Module 4 + </text> + </switch> + </g> + <rect x="1267" y="106" width="280" height="170" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <rect x="1277" y="116" width="90" height="30" fill="none" stroke="none" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 131px; margin-left: 1278px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;"> + Legend + </div> + </div> + </div> + </foreignObject> + <text x="1322" y="135" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold"> + Legend + </text> + </switch> + </g> + <rect x="1307" y="150" width="200" height="30" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 165px; margin-left: 1308px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Component + </div> + </div> + </div> + </foreignObject> + <text x="1407" y="169" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Component + </text> + </switch> + </g> + <rect x="1307" y="190" width="200" height="30" rx="4.5" ry="4.5" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 205px; margin-left: 1308px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + ROS Node + </div> + </div> + </div> + </foreignObject> + <text x="1407" y="209" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + ROS Node + </text> + </switch> + </g> + <rect x="1307" y="230" width="200" height="30" rx="4.5" ry="4.5" fill="#ffe6cc" stroke="#d79b00" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 245px; margin-left: 1308px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + Modlue Plugin + </div> + </div> + </div> + </foreignObject> + <text x="1407" y="249" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle"> + Modlue Plugin + </text> + </switch> + </g> + <rect x="120" y="1106" width="220" height="30" rx="4.5" ry="4.5" fill="#e51400" stroke="#b20000" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 1121px; margin-left: 121px;"> + <div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + New ROS Node + </div> + </div> + </div> + </foreignObject> + <text x="230" y="1126" fill="#ffffff" font-family="Helvetica" font-size="15px" text-anchor="middle"> + New ROS Node + </text> + </switch> + </g> + <path d="M 230.91 1136 L 230.97 1164.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 230.99 1171.53 L 225.97 1161.54 L 230.97 1164.03 L 235.97 1161.52 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1156px; margin-left: 231px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Trajectory + </div> + </div> + </div> + </foreignObject> + <text x="231" y="1159" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Trajectory + </text> + </switch> + </g> + <rect x="530" y="926" width="220" height="30" rx="4.5" ry="4.5" fill="#e51400" stroke="#b20000" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 218px; height: 1px; padding-top: 941px; margin-left: 531px;"> + <div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + New ROS Node + </div> + </div> + </div> + </foreignObject> + <text x="640" y="946" fill="#ffffff" font-family="Helvetica" font-size="15px" text-anchor="middle"> + New ROS Node + </text> + </switch> + </g> + <path d="M 640 956 L 640 1434.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 640 1441.53 L 635 1431.53 L 640 1434.03 L 645 1431.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1375px; margin-left: 656px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Trajectory + </div> + </div> + </div> + </foreignObject> + <text x="656" y="1378" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Trajectory + </text> + </switch> + </g> + <rect x="840" y="306" width="320" height="1035.03" fill="#e51400" stroke="#b20000" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 318px; height: 1px; padding-top: 824px; margin-left: 841px;"> + <div data-drawio-colors="color: #ffffff; " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 19px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"> + New Scenario + </div> + </div> + </div> + </foreignObject> + <text x="1000" y="829" fill="#ffffff" font-family="Helvetica" font-size="19px" text-anchor="middle"> + New Scenario + </text> + </switch> + </g> + <path d="M 1000 1341.03 L 1000 1376 L 811 1376 L 811 1434.03" fill="none" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="stroke"/> + <path d="M 811 1441.53 L 806 1431.53 L 811 1434.03 L 816 1431.53 Z" fill="#d4b455" stroke="#d4b455" stroke-width="4" stroke-miterlimit="10" pointer-events="all"/> + <g transform="translate(-0.5 -0.5)"> + <switch> + <foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"> + <div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1403px; margin-left: 827px;"> + <div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"> + <div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"> + Trajectory + </div> + </div> + </div> + </foreignObject> + <text x="827" y="1406" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle"> + Trajectory + </text> + </switch> + </g> + </g> + <switch> + <g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/> + <a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"> + <text text-anchor="middle" font-size="10px" x="50%" y="100%"> + Text is not SVG - cannot display + </text> + </a> + </switch> +</svg> \ No newline at end of file diff --git a/docs/design/autoware-architecture/planning/index-update.md b/docs/design/autoware-architecture/planning/index-update.md index 04760531a59..66134897e30 100644 --- a/docs/design/autoware-architecture/planning/index-update.md +++ b/docs/design/autoware-architecture/planning/index-update.md @@ -187,50 +187,49 @@ This section describes the inputs and outputs of the Planning Component and of i - Trajectory: Same as above but with some additional safety considerations. - ## Detailed design ### Supported features -| Feature | Description | Requirements | Figure | -| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -| Route Planning | Plan route from the ego vehicle position to the destination.<br> <br> Reference implementation is in [Mission Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/mission_planner/), enabled by launching the `mission_planner` node. | - Lanelet map (driving lanelets) |  | -| Path Planning from Route | Plan path to be followed from the given route. <br> <br> Reference implementation is in [Behavior Path Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/). | - Lanelet map (driving lanelets) |  | -| Obstacle Avoidance | Plan path to avoid obstacles by steering operation. <br> <br> Reference implementation is in [Avoidance](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/docs/behavior_path_planner_avoidance_design/), [Obstacle Avoidance Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_avoidance_planner/). Enable flag in parameter: `launch obstacle_avoidance_planner true` | - objects information |  | -| Path Smoothing | Plan path to achieve smooth steering. <br> <br> Reference implementation is in [Obstacle Avoidance Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_avoidance_planner/). | - Lanelet map (driving lanelet) |  | -| Narrow Space Driving | Plan path to drive within the drivable area. Furthermore, when it is not possible to drive within the drivable area, stop the vehicle to avoid exiting the drivable area. <br> <br> Reference implementation is in [Obstacle Avoidance Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_avoidance_planner/). | - Lanelet map (high-precision lane boundaries) |  | -| Lane Change | Plan path for lane change to reach the destination. <br> <br> Reference implementation is in [Lane Change](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/docs/behavior_path_planner_lane_change_design/).. Enable flag in both parameters: | - Lanelet map (driving lanelets) |  | -| Pull Over | Plan path for pull over to park at the road shoulder. <br> <br> Reference implementation is in [Goal Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/docs/behavior_path_planner_goal_planner_design/). | - Lanelet map (shoulder lane) |  | -| Pull Out | Plan path for pull over to start from the road shoulder. <br> <br> Reference implementation is in [Pull Out Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/docs/behavior_path_planner_pull_out_design/). | - Lanelet map (shoulder lane) |  | -| Path Shift | Plan path in lateral direction in response to external instructions. <br> <br> Reference implementation is in [Side Shift Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/docs/behavior_path_planner_side_shift_design/). | - None |  | -| Obstacle Stop | Plan velocity to stop for an obstacle on the path. <br> <br> Reference implementation is in [Obstacle Stop Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_stop_planner/), [Obstacle Cruise Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_cruise_planner/). `launch obstacle_stop_planner` and enable flag: `TODO`, `launch obstacle_cruise_planner` and enable flag: `TODO` | - objects information |  | -| Obstacle Deceleration | Plan velocity to decelerate for an obstacle located around the path. <br> <br> Reference implementation is in [Obstacle Stop Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_stop_planner/), [Obstacle Cruise Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_cruise_planner/). | - objects information |  | -| Adaptive Cruise Control | Plan velocity to follow the vehicle driving in front of the ego vehicle. <br> <br> Reference implementation is in [Obstacle Stop Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_stop_planner/), [Obstacle Cruise Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_cruise_planner/). | - objects information |  | -| Decelerate for cut-in vehicles | Plan velocity to avoid a risk for cutting-in vehicle to ego lane. <br> <br> Reference implementation is in [Obstacle Cruise Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_cruise_planner/). | - objects information |  | -| Surround Check at starting | Plan velocity to prevent moving when an obstacle exists around the vehicle. <br> <br> Reference implementation is in [Surround Obstacle Checker](https://autowarefoundation.github.io/autoware.universe/main/planning/surround_obstacle_checker/). Enable flag in parameter: `use_surround_obstacle_check true` in [tier4_planning_component.launch.xml](https://github.com/autowarefoundation/autoware_launch/blob/2850d7f4e20b173fde2183d5323debbe0067a990/autoware_launch/launch/components/tier4_planning_component.launch.xml#L8) | - objects information |  | -| Curve Deceleration | Plan velocity to decelerate the speed on a curve. <br> <br> Reference implementation is in [Motion Velocity Smoother](https://autowarefoundation.github.io/autoware.universe/main/planning/motion_velocity_smoother/). | - None |  | -| Curve Deceleration for Obstacle | Plan velocity to decelerate the speed on a curve for a risk of obstacle collision around the path. <br> <br> Reference implementation is in [Obstacle Velocity Limiter](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_velocity_limiter/). | - objects information <br> - Lanelet map (static obstacle) |  | -| Crosswalk | Plan velocity to stop or decelerate for pedestrians approaching or walking on a crosswalk. <br> <br> Reference implementation is in [Crosswalk Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_crosswalk_module/docs/crosswalk-design/). | - objects information <br> - Lanelet map (pedestrian crossing) |  | -| Intersection Oncoming Vehicle Check | Plan velocity for turning right/left at intersection to avoid a risk with oncoming other vehicles. <br> <br> Reference implementation is in [Intersection Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_intersection_module/docs/intersection-design/). | - objects information <br> - Lanelet map (intersection lane and yield lane) |  | -| Intersection Blind Spot Check | Plan velocity for turning right/left at intersection to avoid a risk with other vehicles or motorcycles coming from behind blind spot. <br> <br> Reference implementation is in [Intersection Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_intersection_module/docs/intersection-design/). | - objects information <br> - Lanelet map (intersection lane) |  | -| Intersection Occlusion Check | Plan velocity for turning right/left at intersection to avoid a risk with the possibility of coming vehicles from occlusion area. <br> <br> Reference implementation is in [Intersection Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_intersection_module/docs/intersection-design/). | - objects information <br> - Lanelet map (intersection lane) |  | -| Intersection Traffic Jam Detection | Plan velocity for intersection not to enter the intersection when a vehicle is stopped ahead for a traffic jam. <br> <br> Reference implementation is in [Intersection Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_intersection_module/docs/intersection-design/). | - objects information <br> - Lanelet map (intersection lane) |  | -| Traffic Light | Plan velocity for intersection according to a traffic light signal. <br> <br> Reference implementation is in [Traffic Light Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_traffic_light_module/docs/traffic-light-design/). | - Traffic light color information |  | -| Run-out Check | Plan velocity to decelerate for the possibility of nearby objects running out into the path. <br> <br> Reference implementation is in [Run Out Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_run_out_module/docs/run-out-design/). | - objects information |  | -| Stop Line | Plan velocity to stop at a stop line. <br> <br> Reference implementation is in [Stop Line Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_stop_line_module/docs/stop-line-design/). | - Lanelet map (stop line) |  | -| Occlusion Spot Check | Plan velocity to decelerate for objects running out from occlusion area, for example, from behind a large vehicle. <br> <br> Reference implementation is in [Occlusion Spot Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_occlusion_spot_module/docs/occlusion-spot-design/). | - objects information <br> - Lanelet map (private/public lane) |  | -| No Stop Area | Plan velocity not to stop in areas where stopping is prohibited, such as in front of the fire station entrance. <br> <br> Reference implementation is in [No Stopping Area Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_no_stopping_area_module/docs/no-stopping-area-design/). | - Lanelet map (no stopping area) |  | -| Merge from Private Area to Public Road | Plan velocity for entering the public road from a private driveway to avoid a risk of collision with pedestrians or other vehicles. <br> <br> Reference implementation is in [Merge from Private Area Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_intersection_module/docs/merge-from-private-design/). | - objects information <br> - Lanelet map (private/public lane) | WIP | -| Speed Bump | Plan velocity to decelerate for speed bumps. <br> <br> Reference implementation is in [Speed Bump Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_speed_bump_module/docs/speed-bump-design/). | - Lanelet map (speed bump) |  | -| Detection Area | Plan velocity to stop at the corresponding stop when an object exist in the designated detection area. <br> <br> Reference implementation is in [Detection Area Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_detection_area_module/docs/detection-area-design/). | - Lanelet map (detection area) |  | -| Out of ODD area | Plan velocity to stop before exiting the area designated by ODD (Operational Design Domain). <br> <br> Reference implementation is in (WIP). | - Lanelet map (invalid lanelet) | WIP | -| Collision Detection when deviating from lane | Plan velocity to avoid conflict with other vehicles driving in the another lane when the ego vehicle is deviating from own lane. <br> <br> Reference implementation is in [Out of Lane Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_out_of_lane_module/docs/out-of-lane-design/). | - objects information <br> - Lanelet map (driving lane) | WIP | -| Parking | Plan path and velocity for given goal in parking area. <br> <br> Reference implementation is in [Free Space Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/freespace_planner/). | - objects information <br> - Lanelet map (parking area) |  | -| Autonomous Emergency Braking (AEB) | Perform an emergency stop if a collision with an object ahead is anticipated. It is noted that this function is expected as a final safety layer, and this should work even in the event of failures in the Localization or Perception system. <br> <br> Reference implementation is in [Out of Lane Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_out_of_lane_module/docs/out-of-lane-design/). | - Primitive objects |  | -| Minimum Risk Maneuver (MRM) | Provide appropriate MRM (Minimum Risk Maneuver) instructions when a hazardous event occurs. For example, when a sensor trouble found, send an instruction for emergency braking, moderate stop, or pulling over to the shoulder, depending on the severity of the situation. <br> <br> Reference implementation is in TODO | - TODO | WIP | -| Trajectory Validation | Check the planned trajectory is safe. If it is unsafe, take appropriate action, such as modify the trajectory, stop sending the trajectory or report to the autonomous driving system. <br> <br> Reference implementation is in [Planning Validator](https://autowarefoundation.github.io/autoware.universe/main/planning/planning_validator/). | - None |  | -| Running Lane Map Generation | Generate lane map from localization data recorded in manual driving. <br> <br> Reference implementation is in WIP | - None | WIP | -| Running Lane Optimization | Optimize the centerline (reference path) of the map to make it smooth considering the vehicle kinematics. <br> <br> Reference implementation is in [Static Centerline Optimizer](https://autowarefoundation.github.io/autoware.universe/main/planning/static_centerline_optimizer/). | - Lanelet map (driving lanes) | WIP | +| Feature | Description | Requirements | Figure | +| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| Route Planning | Plan route from the ego vehicle position to the destination.<br> <br> Reference implementation is in [Mission Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/mission_planner/), enabled by launching the `mission_planner` node. | - Lanelet map (driving lanelets) |  | +| Path Planning from Route | Plan path to be followed from the given route. <br> <br> Reference implementation is in [Behavior Path Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/). | - Lanelet map (driving lanelets) |  | +| Obstacle Avoidance | Plan path to avoid obstacles by steering operation. <br> <br> Reference implementation is in [Avoidance](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/docs/behavior_path_planner_avoidance_design/), [Obstacle Avoidance Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_avoidance_planner/). Enable flag in parameter: `launch obstacle_avoidance_planner true` <br> <br> [Demonstration Video](https://youtu.be/A_V9yvfKZ4E) <br> [](https://www.youtube.com/watch?v=A_V9yvfKZ4E) | - objects information |  | +| Path Smoothing | Plan path to achieve smooth steering. <br> <br> Reference implementation is in [Obstacle Avoidance Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_avoidance_planner/). <br> <br> [Demonstration Video](https://youtu.be/RhyAF26Ppzs) <br> [](https://www.youtube.com/watch?v=RhyAF26Ppzs) | - Lanelet map (driving lanelet) |  | +| Narrow Space Driving | Plan path to drive within the drivable area. Furthermore, when it is not possible to drive within the drivable area, stop the vehicle to avoid exiting the drivable area. <br> <br> Reference implementation is in [Obstacle Avoidance Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_avoidance_planner/). <br> <br> [Demonstration Video](https://youtu.be/URzcLO2E1vY) <br> [](https://www.youtube.com/watch?v=URzcLO2E1vY) | - Lanelet map (high-precision lane boundaries) |  | +| Lane Change | Plan path for lane change to reach the destination. <br> <br> Reference implementation is in [Lane Change](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/docs/behavior_path_planner_lane_change_design/). <br> <br> [Demonstration Video](https://youtu.be/0jRDGQ84cD4) <br> [](https://www.youtube.com/watch?v=0jRDGQ84cD4) | - Lanelet map (driving lanelets) |  | +| Pull Over | Plan path for pull over to park at the road shoulder. <br> <br> Reference implementation is in [Goal Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/docs/behavior_path_planner_goal_planner_design/). <br> <br> Demonstration Videos: <br> [Simple Pull Over](https://youtu.be/r3-kAmTb4hc) <br> [](https://www.youtube.com/watch?v=r3-kAmTb4hc) <br> [Arc Forward Pull Over](https://youtu.be/ornbzkWxRWU) <br> [](https://www.youtube.com/watch?v=ornbzkWxRWU) <br> [Arc Backward Pull Over](https://youtu.be/if-0tG3AkLo) <br> [](https://www.youtube.com/watch?v=if-0tG3AkLo) | - Lanelet map (shoulder lane) |  | +| Pull Out | Plan path for pull over to start from the road shoulder. <br> <br> Reference implementation is in [Pull Out Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/docs/behavior_path_planner_start_planner_design/#:~:text=WIP-,Path%20Generation,-%23). <br> <br> Demonstration Video: <br> [Simple Pull Out](https://youtu.be/xOjnPqoHup4) <br> [](https://www.youtube.com/watch?v=xOjnPqoHup4) <br> [Backward Pull Out](https://youtu.be/iGieijPcPcQ) <br> [](https://www.youtube.com/watch?v=iGieijPcPcQ) | - Lanelet map (shoulder lane) |  | +| Path Shift | Plan path in lateral direction in response to external instructions. <br> <br> Reference implementation is in [Side Shift Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/docs/behavior_path_planner_side_shift_design/). | - None |  | +| Obstacle Stop | Plan velocity to stop for an obstacle on the path. <br> <br> Reference implementation is in [Obstacle Stop Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_stop_planner/), [Obstacle Cruise Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_cruise_planner/). `launch obstacle_stop_planner` and enable flag: `TODO`, `launch obstacle_cruise_planner` and enable flag: `TODO` <br> <br> [Demonstration Video](https://youtu.be/d8IRW_xArcE) <br> [](https://www.youtube.com/watch?v=d8IRW_xArcE) | - objects information |  | +| Obstacle Deceleration | Plan velocity to decelerate for an obstacle located around the path. <br> <br> Reference implementation is in [Obstacle Stop Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_stop_planner/), [Obstacle Cruise Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_cruise_planner/). <br> <br> [Demonstration Video](https://youtu.be/gvN1otgeaaw) <br> [](https://www.youtube.com/watch?v=gvN1otgeaaw) | - objects information |  | +| Adaptive Cruise Control | Plan velocity to follow the vehicle driving in front of the ego vehicle. <br> <br> Reference implementation is in [Obstacle Stop Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_stop_planner/), [Obstacle Cruise Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_cruise_planner/). | - objects information |  | +| Decelerate for cut-in vehicles | Plan velocity to avoid a risk for cutting-in vehicle to ego lane. <br> <br> Reference implementation is in [Obstacle Cruise Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_cruise_planner/). | - objects information |  | +| Surround Check at starting | Plan velocity to prevent moving when an obstacle exists around the vehicle. <br> <br> Reference implementation is in [Surround Obstacle Checker](https://autowarefoundation.github.io/autoware.universe/main/planning/surround_obstacle_checker/). Enable flag in parameter: `use_surround_obstacle_check true` in [tier4_planning_component.launch.xml](https://github.com/autowarefoundation/autoware_launch/blob/2850d7f4e20b173fde2183d5323debbe0067a990/autoware_launch/launch/components/tier4_planning_component.launch.xml#L8) <br> <br> [Demonstration Video](https://youtu.be/bbGgtXN3lC4) <br> [](https://www.youtube.com/watch?v=bbGgtXN3lC4) | - objects information |  | +| Curve Deceleration | Plan velocity to decelerate the speed on a curve. <br> <br> Reference implementation is in [Motion Velocity Smoother](https://autowarefoundation.github.io/autoware.universe/main/planning/motion_velocity_smoother/). | - None |  | +| Curve Deceleration for Obstacle | Plan velocity to decelerate the speed on a curve for a risk of obstacle collision around the path. <br> <br> Reference implementation is in [Obstacle Velocity Limiter](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_velocity_limiter/). <br> <br> [Demonstration Video](https://youtu.be/I-oFgG6kIAs) <br> [](https://www.youtube.com/watch?v=I-oFgG6kIAs) | - objects information <br> - Lanelet map (static obstacle) |  | +| Crosswalk | Plan velocity to stop or decelerate for pedestrians approaching or walking on a crosswalk. <br> <br> Reference implementation is in [Crosswalk Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_crosswalk_module/). <br> <br> [Demonstration Video](https://youtu.be/tUvthyIL2W8) <br> [](https://www.youtube.com/watch?v=tUvthyIL2W8) | - objects information <br> - Lanelet map (pedestrian crossing) |  | +| Intersection Oncoming Vehicle Check | Plan velocity for turning right/left at intersection to avoid a risk with oncoming other vehicles. <br> <br> Reference implementation is in [Intersection Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_intersection_module/). <br> <br> [Demonstration Video](https://youtu.be/SGD07Hqg4Hk) <br> [](https://www.youtube.com/watch?v=SGD07Hqg4Hk) | - objects information <br> - Lanelet map (intersection lane and yield lane) |  | +| Intersection Blind Spot Check | Plan velocity for turning right/left at intersection to avoid a risk with other vehicles or motorcycles coming from behind blind spot. <br> <br> Reference implementation is in [Blind Spot Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_blind_spot_module/). <br> <br> [Demonstration Video](https://youtu.be/oaTCJRafDGA) <br> [](https://www.youtube.com/watch?v=oaTCJRafDGA) | - objects information <br> - Lanelet map (intersection lane) |  | +| Intersection Occlusion Check | Plan velocity for turning right/left at intersection to avoid a risk with the possibility of coming vehicles from occlusion area. <br> <br> Reference implementation is in [Intersection Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_intersection_module/). <br> <br> [Demonstration Video](https://youtu.be/bAHXMB7kbFc) <br> [](https://www.youtube.com/watch?v=bAHXMB7kbFc) | - objects information <br> - Lanelet map (intersection lane) |  | +| Intersection Traffic Jam Detection | Plan velocity for intersection not to enter the intersection when a vehicle is stopped ahead for a traffic jam. <br> <br> Reference implementation is in [Intersection Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_intersection_module/). <br> <br> [Demonstration Video](https://youtu.be/negK4VbrC5o) <br> [](https://www.youtube.com/watch?v=negK4VbrC5o) | - objects information <br> - Lanelet map (intersection lane) |  | +| Traffic Light | Plan velocity for intersection according to a traffic light signal. <br> <br> Reference implementation is in [Traffic Light Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_traffic_light_module/). <br> <br> [Demonstration Video](https://youtu.be/lGA53KljQrM) <br> [](https://www.youtube.com/watch?v=lGA53KljQrM) | - Traffic light color information |  | +| Run-out Check | Plan velocity to decelerate for the possibility of nearby objects running out into the path. <br> <br> Reference implementation is in [Run Out Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_run_out_module/). <br> <br> [Demonstration Video](https://youtu.be/9IDggldT2t0) <br> [](https://www.youtube.com/watch?v=9IDggldT2t0) | - objects information |  | +| Stop Line | Plan velocity to stop at a stop line. <br> <br> Reference implementation is in [Stop Line Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_stop_line_module/). <br> <br> [Demonstration Video](https://youtu.be/eej9jYt-GSE) <br> [](https://www.youtube.com/watch?v=eej9jYt-GSE) | - Lanelet map (stop line) |  | +| Occlusion Spot Check | Plan velocity to decelerate for objects running out from occlusion area, for example, from behind a large vehicle. <br> <br> Reference implementation is in [Occlusion Spot Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_occlusion_spot_module/). <br> <br> [Demonstration Video](https://youtu.be/3qs8Ivjh1fs) <br> [](https://www.youtube.com/watch?v=3qs8Ivjh1fs) | - objects information <br> - Lanelet map (private/public lane) |  | +| No Stop Area | Plan velocity not to stop in areas where stopping is prohibited, such as in front of the fire station entrance. <br> <br> Reference implementation is in [No Stopping Area Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_no_stopping_area_module/). | - Lanelet map (no stopping area) |  | +| Merge from Private Area to Public Road | Plan velocity for entering the public road from a private driveway to avoid a risk of collision with pedestrians or other vehicles. <br> <br> Reference implementation is in [Merge from Private Area Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_intersection_module/). | - objects information <br> - Lanelet map (private/public lane) | WIP | +| Speed Bump | Plan velocity to decelerate for speed bumps. <br> <br> Reference implementation is in [Speed Bump Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_speed_bump_module/). <br> <br> [Demonstration Video](https://youtu.be/FpX3q3YaaCw) <br> [](https://www.youtube.com/watch?v=FpX3q3YaaCw) | - Lanelet map (speed bump) |  | +| Detection Area | Plan velocity to stop at the corresponding stop when an object exist in the designated detection area. <br> <br> Reference implementation is in [Detection Area Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_detection_area_module/). <br> <br> [Demonstration Video](https://youtu.be/YzXF4U69lJs) <br> [](https://www.youtube.com/watch?v=YzXF4U69lJs) | - Lanelet map (detection area) |  | +| No Drivable Lane | Plan velocity to stop before exiting the area designated by ODD (Operational Design Domain) or stop the vehicle if autonomous mode started in out of ODD lane. <br> <br> Reference implementation is in [No Drivable Lane Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_no_drivable_lane_module/). | - Lanelet map (no drivable lane) |  | +| Collision Detection when deviating from lane | Plan velocity to avoid conflict with other vehicles driving in the another lane when the ego vehicle is deviating from own lane. <br> <br> Reference implementation is in [Out of Lane Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_out_of_lane_module/). | - objects information <br> - Lanelet map (driving lane) | WIP | +| Parking | Plan path and velocity for given goal in parking area. <br> <br> Reference implementation is in [Free Space Planner](https://autowarefoundation.github.io/autoware.universe/main/planning/freespace_planner/). <br> <br> [Demonstration Video](https://youtu.be/rAIYmwpNWfA) <br> [](https://www.youtube.com/watch?v=rAIYmwpNWfA) | - objects information <br> - Lanelet map (parking area) |  | +| Autonomous Emergency Braking (AEB) | Perform an emergency stop if a collision with an object ahead is anticipated. It is noted that this function is expected as a final safety layer, and this should work even in the event of failures in the Localization or Perception system. <br> <br> Reference implementation is in [Out of Lane Module](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_out_of_lane_module/). | - Primitive objects |  | +| Minimum Risk Maneuver (MRM) | Provide appropriate MRM (Minimum Risk Maneuver) instructions when a hazardous event occurs. For example, when a sensor trouble found, send an instruction for emergency braking, moderate stop, or pulling over to the shoulder, depending on the severity of the situation. <br> <br> Reference implementation is in TODO | - TODO | WIP | +| Trajectory Validation | Check the planned trajectory is safe. If it is unsafe, take appropriate action, such as modify the trajectory, stop sending the trajectory or report to the autonomous driving system. <br> <br> Reference implementation is in [Planning Validator](https://autowarefoundation.github.io/autoware.universe/main/planning/planning_validator/). | - None |  | +| Running Lane Map Generation | Generate lane map from localization data recorded in manual driving. <br> <br> Reference implementation is in WIP | - None | WIP | +| Running Lane Optimization | Optimize the centerline (reference path) of the map to make it smooth considering the vehicle kinematics. <br> <br> Reference implementation is in [Static Centerline Optimizer](https://autowarefoundation.github.io/autoware.universe/main/planning/static_centerline_optimizer/). | - Lanelet map (driving lanes) | WIP | <!--  --> @@ -240,11 +239,10 @@ The following diagram describes the reference implementation of the Planning com _Note that some implementation does not adhere to the high-level architecture design due to the difficulties of the implementation and require updating._ -ハイレベルなデザインと比較したときの重要な違いは、「シナリオレイヤーの導入」と「behavior/motionの明確な分離」です。これらは現時点での性能や実装的な課題から導入されています。これらをハイレベルなデザインとして定義するか、それとも実装の一部として改良していくかは議論の必要があります。 - + For more details, please refer to the design documents in each package. @@ -282,6 +280,8 @@ For more details, please refer to the design documents in each package. ### Important information in the current implementation +ハイレベルなデザインと比較したときの重要な違いは、「シナリオレイヤーの導入」と「behavior/motionの明確な分離」です。これらは現時点での性能や実装的な課題から導入されています。これらをハイレベルなデザインとして定義するか、それとも実装の一部として改良していくかは議論の必要があります。 + #### Introducing the Scenario Planning layer There are different requirements for interfaces between driving in well-structured lanes and driving in a free-space area like a parking lot. For example, while Lane Driving can handle routes with map IDs, this is not appropriate for planning in free space. The mechanism that switches planning sub-components at the scenario level (Lane Driving, Parking, etc) enables a flexible design of the interface, however, it has a drawbacks of the reuse of modules across different scenarios. @@ -292,13 +292,29 @@ To understand this background, this [previously discussed document](https://gith ### How to add new modules in the current implementation -現時点の実装でもモジュールレベルの機能の追加は可能ですが、全ての機能に対して統一的なインターフェースは提供されていません。 +現時点の実装でもモジュールレベルの機能の追加は可能ですが、全ての機能に対して統一的なインターフェースは提供されていません。モジュールレベルでの拡張を行うための、現時点での実装方法について簡単に説明します。 + + + + +#### Add new modules in behavior_velocity_planner or behavior_path_plnner + +[behavior_path_planner](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/) や [behavior_velocity_planner](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_planner/) などの ROS nodeは、pluginによるモジュールインターフェースが用意されています。これらの ROS nodeで定義されるモジュールのインターフェースに沿ってモジュールを追加することにより、動的にモジュールのload/unloadが可能となります。具体的なモジュール追加の方法については、各パッケージのドキュメントをご確認ください。 -- Replace with scenario layer. -- Add new modules in behavior_velocity_planner or behavior_path_palnner -- Add a new ros node in the motion planning +#### Add a new ros node in the planning component +Motion Planningにおいてモジュールを追加する場合は、モジュールをROS Nodeで作成し、planning componentの中に統合する必要があります。現時点の構成は、上流で計算される目標軌道に対して情報を付加する形となっており、その過程に ROS Node を導入することによって機能の拡張を可能とします。 + +#### Add or replace with scenarios + +今の実装には、まとめて複数のモジュールを切り替えるための方法としてシナリオレベルでの切り替えロジックが導入されています。これを用いることによって、新たなシナリオ(例えばhighway drivingなど)の追加が可能と成ります。 + +実際にシナリオをros nodeなどで作成し、scenario_selectorというros nodeをそのシナリオに対応させれば統合は完了します。このメリットは、他のシナリオ(Lane Drivingなど)の実装に影響を与えずに、大きな新規機能を導入することができます。一方で、既存のplanning moduleレベルでの連携を行うことはできず、シナリオの切り替えによるシナリオレベルでの連携しかできません。 + + + +<!-- ### Important Parameters | Package | Parameter | Type | Description | @@ -327,4 +343,4 @@ Currently, the supported modules are as follows. #### [2] Size of Path Points -Some functions do not support paths with only one point. Therefore, each modules should generate the path with more than two path points. +Some functions do not support paths with only one point. Therefore, each modules should generate the path with more than two path points. --> From ef8786e472ee8254f1f7d39a588ea1a59a76fbee Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Sun, 19 Nov 2023 18:41:05 +0900 Subject: [PATCH 15/19] update Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- .../planning/index-update.md | 89 ++++++++----------- .../autoware-architecture/planning/index.md | 5 +- 2 files changed, 37 insertions(+), 57 deletions(-) diff --git a/docs/design/autoware-architecture/planning/index-update.md b/docs/design/autoware-architecture/planning/index-update.md index 66134897e30..4ae86bd2b94 100644 --- a/docs/design/autoware-architecture/planning/index-update.md +++ b/docs/design/autoware-architecture/planning/index-update.md @@ -1,5 +1,6 @@ # Planning component design -<!-- + +<!-- - discussionsはトレードオフ選定とかにしたい - サードパーティによって拡張というよりは、誰でも拡張できるって言い回しのほうが良いはず - mission plannerの使われ方を重点的に考えよう。FMSとして機能が外だしされることがあるから、これは別れてるのよ。 @@ -15,44 +16,42 @@ ## Context and scope -自動運転システムにおける Planning コンポーネントの役割は、与えられたミッションを満たすために、安全で交通ルールに基づいた自動運転車両の目標軌道(経路と速度)を生成することである。 +自動運転システムにおける Planning コンポーネントの役割は、与えられたミッションを満たすために、安全で交通ルールに基づいた自動運転車両の目標軌道(経路と速度)を生成することです。 -このドキュメントではAutowareにおけるplanningの要求やデザインをまとめる。これによって、開発者はplanning Componentがどのような考えで設計されているのか、およびそれらをどう拡張させていくのかを理解することができます。 +このドキュメントでは、Autowareにおけるplanningの要求やデザインをまとめます。これによって、開発者はPlanning Componentがどのような考えで設計されているのか、およびそれらをどう拡張させていくのかを理解することができます。 -ドキュメントの前半ではハイレベルな要求やデザインを、後半は実際の実装や提供機能について述べる。 +ドキュメントの前半ではハイレベルな要求やデザインについて、後半では実際の実装や提供機能について述べます。 ## Goals and non-goals -我々の目標は、純粋な自動運転システムの開発ではなく、自動運転"プラットフォーム"の開発である。このプラットフォームでは、誰もが自動運転の機能を自由に拡張できる。 - +我々の目標は、純粋な自動運転システムの開発ではなく、自動運転"プラットフォーム"の開発です。このプラットフォームでは、誰もが自動運転の機能を自由に拡張できます。 -Autowareではこのプラットフォーム観点から [microautonomy architecture](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts) の概念を提唱しています。Microautonomyとは、適切な機能のモジュール化やインターフェースの明確な定義に基づき、高い拡張性を焦点を当てた自動運転システムの設計コンセプトです。 +Autowareでは、このプラットフォーム観点から [microautonomy architecture](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts) の概念を提唱しています。Microautonomyとは、適切な機能のモジュール化やインターフェースの明確な定義に基づき、高い拡張性に焦点を当てた自動運転システムの設計コンセプトです。 -これを踏まえ、Planning component の設計方針は、世の中のすべての複雑な自動運転のユースケースを解決することではなく(なぜならそれは非常に難しい問題なので)、**ユーザーのニーズに合わせてカスタマイズでき、誰でも容易に機能拡張が可能なPlanning開発プラットフォームを提供すること** に設定されています。我々が提供するプラットフォームが様々なニーズに対する拡張性を獲得した結果、最終的に多くの複雑なユースケースが解決できるようになると信じています。 +これを踏まえ、Planning componentの設計方針は、世の中のすべての複雑な自動運転のユースケースを解決することではなく(なぜならそれは非常に難しい問題だからです)、**ユーザーのニーズに合わせてカスタマイズでき、誰でも容易に機能拡張が可能なPlanning開発プラットフォームを提供すること**に設定されています。我々が提供するプラットフォームが様々なニーズに対する拡張性を獲得した結果、最終的に多くの複雑なユースケースが解決できるようになると信じています。 -この方針を明確にするため、以下に Goal と Non-Goal をリスト化します。 +この方針を明確にするため、以下にGoalとNon-Goalをリスト化します。 **Goals:** - **自動運転の走行に必要な最低限の基本機能を持つこと** - - Planning Componentは機能拡張以前に、自動運転のために必須な機能を提供する必要があります。これは走る、止まる、曲がるといった基本計画に加え、比較的安全な状況での車線変更や信号停止などの機能が含まれます。 -- **提供機能はモジュール化されており、誰でも機能の再利用や拡張が可能であること** - - これはユーザーが期待するODDに対し、拡張機能によって対応できることを意味します。プラグインのような形で誰でも機能拡張ができれば、それぞれのニーズ(Lv4/Lv2自動運転、公道/私道走行、大型車両、小型ロボットなど)にあったシステムが提供できます。 - - ユーザーのニーズには、純粋な自動運転としての性能ではなく、限定されたODD(例えば障害物のない管理された私道)において可能な限り消費電力を下げることなども含まれます。この場合はモジュールをdisableさせることによって、この場合はODDを限定させる代わりに、処理負荷を下げられるようにする必要があります。 -- **人間のオペレータによって能力が拡張できること** + - Planning Componentは、機能拡張以前に、自動運転のために必須な機能を提供する必要があります。これには、走る、止まる、曲がるといった基本計画に加え、比較的安全でシンプルな状況での車線変更や信号停止などの機能が含まれます。 +- **提供機能はモジュール化されており、誰でも機能の再利用や拡張が可能であること** + - これはユーザーが期待するODDに対し、拡張機能によって対応できることを意味します。プラグインのような形で誰でも機能拡張ができれば、それぞれのニーズ(Lv4/Lv2自動運転、公道/私道走行、大型車両、小型ロボットなど)に合ったシステムが提供できます。 + - ユーザーのニーズには、純粋な自動運転としての性能ではなく、限定されたODD(例えば障害物のない管理された私道)において可能な限り消費電力を下げることなども含まれます。この場合、モジュールをdisableさせることによって、ODDを限定する代わりに、処理負荷を下げることが可能です。 +- **人間のオペレータによって能力が拡張できること** - オペレータによる補助も機能拡張の一つです。これにより、非常に複雑で困難なユースケースにおいても、人間の補助という機能拡張で対応できることを意味します。ここで具体的なオペレータの種類は定義しません。研究フェーズにおいては車に同乗している人かもしれませんし、自動運転サービス提供者にとっては非常時にのみ繋がる遠隔オペレータかもしれません。 - **Non-goals:** -Planning Componentは third-partyのモジュールによって機能拡張されることを想定しています。したがって、以下はAutowareのPlanning Component単体の目標から除外されます。 +Planning Componentはthird-partyのモジュールによって機能拡張されることを想定しています。したがって、以下はAutowareのPlanning Component単体の目標から除外されます。 -- ユーザーが必要とする機能の全てをAutoware単独で提供すること +- ユーザーが必要とする機能の全てをAutoware単独で提供すること - 自動運転としての完全な機能と性能 - 人間の性能を常に上回る性能 - 「絶対に衝突しない」という機能 -なお、「絶対に衝突しない」といった性能は現在の目標ではありませんが、外部モジュールとの連携や将来の強化によってそのような状態を達成できるようなアーキテクチャを作成することは我々の目標です。そしてこれらの要求は自動運転プラットフォームの視点から来ているものであり、一般的な自動運転システムにおけるPlanning Componentへの要求としては一般的では無いかもしれません。 +なお、「絶対に衝突しない」といった性能は現在の目標ではありませんが、外部モジュールとの連携や将来の強化によってそのような状態を達成できるようなアーキテクチャを作成することは我々の目標です。そしてこれらの要求は自動運転プラットフォームの視点から来ているものであり、一般的な自動運転システムにおけるPlanning Componentへの要求としては一般的ではないかもしれません。 <!-- ## Requirements @@ -64,21 +63,21 @@ WIP --> ## High level design -このダイアグラムはPlanning Componentのハイレベルなアーキテクチャを示している。なお、これは理想的なハイレベルデザインであり、現時点での実装がこれに従っていないこともあることに注意する。実際の詳細な実装は後半を参照のこと。 +このダイアグラムはPlanning Componentのハイレベルなアーキテクチャを示しています。なお、これは理想的なハイレベルデザインであり、現時点での実装がこれに完全に従っているわけではないことに注意してください。実際の詳細な実装については後半を参照してください。 <!--  --> +  -Planning コンポーネントはいくつかのサブコンポーネントからなります。 +Planning コンポーネントは以下のようないくつかのサブコンポーネントから構成されます。 -- **Mission Planning**: 地図情報をもとに、自動運転ミッションの設定や現在位置からゴールまでのルートを計算を行います。 -- **Planning Modules**: 定められたミッションに対し、目標軌道やウインカーなどの自車の振る舞いの計画を行います。このサブコンポーネントは機能を担当するいくつかのモジュールから成ります。これらのモジュールは便宜上、BehaviorとMotionの2つに分けられています。 +- **Mission Planning**: 地図情報を基に、自動運転ミッションの設定や現在位置からゴールまでのルート計算を行います。 +- **Planning Modules**: 定められたミッションに対して、目標軌道やウインカーなどの自車の振る舞いの計画を行います。このサブコンポーネントは、機能を担当するいくつかのモジュールから成り立っています。これらのモジュールは便宜上、BehaviorとMotionの2つに分類されます。 - **Behavior Planner**: 交通ルールや安全を考慮して適切な経路を計算します。 - **Motion Planner**: Behavior Plannerと連携し、車両運動や乗り心地を考慮した目標軌道を計算します。 -- **Validation**: 計算された目標軌道を検証し、安全性の担保や緊急時の振る舞いを担います。 +- **Validation**: 計算された目標軌道を検証し、安全性の確保や緊急時の対応を担います。 - -ここでは microautonomy アーキテクチャに従い、モジュール型のシステムフレームワークを採用しています。planningの機能はモジュールとして実装され、これらのモジュールは与えられたユースケースに応じて動的/静的にload/unloadされます。これらには例えば、レーンチェンジ、交差点、横断歩道モジュールなどのモジュールが含まれています。 +ここではmicroautonomyアーキテクチャに従い、モジュール型のシステムフレームワークを採用しています。Planningの機能はモジュールとして実装され、これらのモジュールは与えられたユースケースに応じて動的/静的にload/unloadされます。これには例えば、レーンチェンジ、交差点、横断歩道モジュールなどが含まれます。 ### Remarkable points @@ -86,57 +85,46 @@ Planning コンポーネントはいくつかのサブコンポーネントか #### Modulation of each function -ルート生成や車線変更や交差点、横断歩道などPlanningに必要な機能はモジュールとして管理されます。これらのモジュールに対してはある程度共通化されたインターフェースが提供され、それに従うことによって誰でもモジュールの追加や拡張を行うことができます。詳細なインターフェースは後述。 - +ルート生成や車線変更、交差点、横断歩道などPlanningに必要な機能はモジュールとして管理されます。これらのモジュールにはある程度共通化されたインターフェースが提供され、それに従うことで誰でもモジュールの追加や拡張を行うことができます。詳細なインターフェースについては後述します。 #### Separation of Mission Planning sub-component -Mission Planningの役割は、FMS(Fleet Management System)などの既存サービスの代替になるものです。ハイレベルで定義されたMission Planningのインターフェースに従うことにより、これらthird-party機能との連携を容易に行うことができます。 +Mission Planningの役割は、FMS(Fleet Management System)などの既存サービスの代替となります。ハイレベルで定義されたMission Planningのインターフェースに従うことで、これらthird-party機能との連携を容易に行うことができます。 #### Separation of Validation sub-component -誰でも容易に拡張できるというPlanning Componentの性質の背反として、全ての機能それぞれにおいて期待されるレベルの安全性を担保することは困難です。PlanningのValidation機能は実際に経路計画などを行うモジュールからは分離して管理され、モジュールに任意の変更があった場合にも一定のレベルの安全を担保できるように設計されています。 +誰でも容易に拡張できるというPlanning Componentの性質上、全ての機能それぞれにおいて期待されるレベルの安全性を担保することは困難です。PlanningのValidation機能は、実際に経路計画などを行うモジュールからは分離して管理され、モジュールに任意の変更があった場合でも一定のレベルの安全を担保できるように設計されています。 #### Interface for HMI (Human Machine Interface) - -Human Machine Interfaceとの連携は、人間オペレータとの連携を円滑に行うために必要不可欠なものです。このComponent間のインターフェースを介して、同乗オペレータや遠隔監視システムとの連携を可能にします。 - - +Human Machine Interfaceとの連携は、人間オペレータとの連携を円滑に行うために必要不可欠です。このComponent間のインターフェースを介して、同乗オペレータや遠隔監視システムとの連携を可能にします。 #### Trade-offs for the separation of planning and other components -Autowareの全体設計の話ではあるが、Planningを孤立したComponentとして設計することにおいても注意するべきトレードオフが存在します。planning、perception、localization、controlなどのコンポーネントを分離して開発することで、サードパーティ製のコンポーネントとの連携が容易になります。しかし、ここではパフォーマンスと拡張性の間にトレードオフがあります。例えば、perception コンポーネントは理想的には planning コンポーネントが必要とするオブジェクトだけを認識すれば十分ですが、コンポーネントを分離することでそのような密接なコミュニケーションが難しくなり、不要なオブジェクトに対しても処理を実行する必要があります。また、計画と制御を分離すると、計画時に車両の運動性能を考慮することが難しくなるという性能面の欠点があります。これを補うためには、インターフェースの情報量を増やすか、計算負荷を増やすなど対応が必要になります。 - +Autowareの全体設計において、Planningを孤立したComponentとして設計する際のトレードオフに注意が必要です。Planning、Perception、Localization、Controlなどのコンポーネントを分離して開発することで、サードパーティ製のコンポーネントとの連携が容易になります。しかし、パフォーマンスと拡張性の間にはトレードオフが存在します。例えば、Perceptionコンポーネントは理想的にはPlanningコンポーネントが必要とするオブジェクトだけを認識すれば十分ですが、コンポーネントを分離することでそのような密接なコミュニケーションが難しくなり、不要なオブジェクトに対しても処理を実行する必要があります。また、計画と制御を分離すると、計画時に車両の運動性能を考慮することが難しくなるという性能面の欠点があります。これを補うためには、インターフェースの情報量を増やすか、計算負荷を増やすなどの対応が必要になります。 ## How to extend/corporate with new features (WIP) Planning Componentのデザインの最も重要な機能の一つが、外部モジュールとの連携です。以下の図に示すように外部の機能を組み込む際にはいくつかの方法があります。 -  - - ### Planning Componentに新たなモジュールを追加する ユーザーはモジュールとして作成されたPlanningの機能を置き換えたり、機能追加をすることができます。これは最も一般的な機能の拡張方法です。これによって、求めるODDにおいて不足している機能を追加したり、逆に既存の機能をよりシンプルなものに変更したりすることができます。 -ただし、この機能追加を行うためには、各モジュールのインターフェースが適切に整理されている必要があります。2023.11現在ではこのような理想的なモジュールの仕組みは提供されておらず、いくつかの制限を含んでいます。詳細は Reference Implementationの [How to add new modules in the current implementation](#how-to-add-new-modules-in-the-current-implementation) を確認してください。 - +ただし、この機能追加を行うためには、各モジュールのインターフェースが適切に整理されている必要があります。2023年11月現在では、このような理想的なモジュールの仕組みは提供されておらず、いくつかの制限があります。詳細はReference Implementationの [How to add new modules in the current implementation](#how-to-add-new-modules-in-the-current-implementation) を確認してください。 ### Planningのサブコンポーネントを置き換える -いくつかのユーザーは、サブコンポーネントレベルでの連携・拡張を行うことに興味があるでしょう。これは例えば、Mission Planningを既存のFMSサービスと置き換えたり、既存のValidation機能は使いつつ経路生成の機能を third-party製のもの置き換えるといった要求に該当します。 - -後に説明される [Internal interface in the planning component](#internal-interface-in-the-planning-component) に従えば、サブコンポーネントレベルでの連携・拡張を行うことが可能です。既存のplanningの機能との複雑な連携はできませんが、一部のplanning componentの機能と外部モジュールとの連携が可能に成ります。 +いくつかのユーザーは、サブコンポーネントレベルでの連携・拡張に興味があるかもしれません。これは例えば、Mission Planningを既存のFMSサービスと置き換えたり、既存のValidation機能を使用しつつ経路生成の機能をthird-party製のものに置き換えるといった要求に該当します。 +後に説明される [Internal interface in the planning component](#internal-interface-in-the-planning-component) に従えば、サブコンポーネントレベルでの連携・拡張を行うことが可能です。既存のPlanningの機能との複雑な連携はできませんが、一部のPlanning Componentの機能と外部モジュールとの連携が可能になります。 ### Planning Component全体を置き換える 自動運転のPlanningシステムを開発している企業や研究室などは、自社のPlanning製品をAutowareのPerceptionやControlモジュールと連携させ、自動運転システム全体の評価を行うことに関心があるでしょう。これはPlanning全体を置き換えることによって可能となります。Component間で定義される、おそらく最も堅牢で安定したインターフェースに従えば簡単に置き換えが可能です。ただし、既存のplanningモジュールとの連携はできません。 - ## Component interface This section describes the inputs and outputs of the Planning Component and of its internal modules. See the [Planning Component Interface](../../autoware-interfaces/components/planning.md) page for the current implementation. @@ -186,7 +174,6 @@ This section describes the inputs and outputs of the Planning Component and of i - **Validation to Control Component** - Trajectory: Same as above but with some additional safety considerations. - ## Detailed design ### Supported features @@ -239,9 +226,6 @@ The following diagram describes the reference implementation of the Planning com _Note that some implementation does not adhere to the high-level architecture design due to the difficulties of the implementation and require updating._ - - -  For more details, please refer to the design documents in each package. @@ -277,15 +261,16 @@ For more details, please refer to the design documents in each package. - [_external_velocity_limit_selector_](https://autowarefoundation.github.io/autoware.universe/main/planning/external_velocity_limit_selector/): takes an appropriate velocity limit from multiple candidates. - [_motion_velocity_smoother_](https://autowarefoundation.github.io/autoware.universe/main/planning/motion_velocity_smoother/): calculates final velocity considering velocity, acceleration, and jerk constraints. - ### Important information in the current implementation ハイレベルなデザインと比較したときの重要な違いは、「シナリオレイヤーの導入」と「behavior/motionの明確な分離」です。これらは現時点での性能や実装的な課題から導入されています。これらをハイレベルなデザインとして定義するか、それとも実装の一部として改良していくかは議論の必要があります。 #### Introducing the Scenario Planning layer + There are different requirements for interfaces between driving in well-structured lanes and driving in a free-space area like a parking lot. For example, while Lane Driving can handle routes with map IDs, this is not appropriate for planning in free space. The mechanism that switches planning sub-components at the scenario level (Lane Driving, Parking, etc) enables a flexible design of the interface, however, it has a drawbacks of the reuse of modules across different scenarios. #### Separation of Behavior and Motion + One of the classic approach to Planning involves dividing it into "Behavior", which decides the action, and "Motion", which determines the final movement. However, this separation implies a trade-off with performance, as performance tends to degrade with increasing separation of functions. For example, Behavior needs to make decisions without prior knowledge of the computations that Motion will eventually perform, which generally results in conservative decision-making. On the other hand, if behavior and motion are integrated, motion performance and decision-making become interdependent, creating challenges in terms of expandability, such as when you wish to extend only the decision-making function to follow a regional traffic rules. To understand this background, this [previously discussed document](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/main/docs/design/software_architecture/Planning/DesignRationale.md) may be useful. @@ -296,12 +281,10 @@ To understand this background, this [previously discussed document](https://gith  - #### Add new modules in behavior_velocity_planner or behavior_path_plnner [behavior_path_planner](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/) や [behavior_velocity_planner](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_planner/) などの ROS nodeは、pluginによるモジュールインターフェースが用意されています。これらの ROS nodeで定義されるモジュールのインターフェースに沿ってモジュールを追加することにより、動的にモジュールのload/unloadが可能となります。具体的なモジュール追加の方法については、各パッケージのドキュメントをご確認ください。 - #### Add a new ros node in the planning component Motion Planningにおいてモジュールを追加する場合は、モジュールをROS Nodeで作成し、planning componentの中に統合する必要があります。現時点の構成は、上流で計算される目標軌道に対して情報を付加する形となっており、その過程に ROS Node を導入することによって機能の拡張を可能とします。 @@ -312,9 +295,7 @@ Motion Planningにおいてモジュールを追加する場合は、モジュ 実際にシナリオをros nodeなどで作成し、scenario_selectorというros nodeをそのシナリオに対応させれば統合は完了します。このメリットは、他のシナリオ(Lane Drivingなど)の実装に影響を与えずに、大きな新規機能を導入することができます。一方で、既存のplanning moduleレベルでの連携を行うことはできず、シナリオの切り替えによるシナリオレベルでの連携しかできません。 - - -<!-- +<!-- ### Important Parameters | Package | Parameter | Type | Description | diff --git a/docs/design/autoware-architecture/planning/index.md b/docs/design/autoware-architecture/planning/index.md index 1c47a8d9a31..c3bdc02a159 100644 --- a/docs/design/autoware-architecture/planning/index.md +++ b/docs/design/autoware-architecture/planning/index.md @@ -9,10 +9,9 @@ - ハイレベルに対するユースケースを上げる - 車両の振る舞いのユースケース - 話ゴールやチェくポイント、NGポイントを与えてplanning内部でルートを計算して進む / 渋滞情報を加味したルートを外部から与えて走行する -開発者のユースケース + 開発者のユースケース - 中の作りの話(実装や設計レベル):機能の差し替えができていてほしいので(レーンチェンジAとレーンチェンジBとか)、柔軟に変更できる必要があり、各機能はモジュールとして実装される。 - ## Purpose of this document This document outlines the high-level design strategies, goals and related rationales in the development of the Planning Component. Through this document, it is expected that all OSS developers will comprehend the design philosophy, goals and constraints under which the Planning Component is designed, and participate seamlessly in the development. @@ -108,7 +107,7 @@ Following the microautonomy architecture, we adopt a modular system framework wh ここでは microautonomy アーキテクチャに従い、モジュール型のシステムフレームワークを採用しています。planningの機能はモジュールとして実装され、これらのモジュールは与えられたユースケースに応じて動的にロードおよびアンロードされます。例えば、behavior planning のサブコンポーネントには、レーンチェンジ、交差点、横断歩道モジュールなどのモジュールが含まれています。 -### Discussions -> わからん。trade-off選定とかにしよう。 +### Discussions -> わからん。trade-off選定とかにしよう The following provides discussion points on trade-offs in the architecture. From this information, you can see the current design limitation, challenges, and potential improvement. From 36d0adc72b8353cca0ca2635772010749b5102cc Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Fri, 24 Nov 2023 22:07:21 +0900 Subject: [PATCH 16/19] update Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- ...lanning-diagram-miyake-reviewed.drawio.svg | 8 ++++-- .../planning/index-update.md | 28 +++++++++---------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/docs/design/autoware-architecture/planning/image/high-level-planning-diagram-miyake-reviewed.drawio.svg b/docs/design/autoware-architecture/planning/image/high-level-planning-diagram-miyake-reviewed.drawio.svg index cbf19c12b49..8129b30d350 100644 --- a/docs/design/autoware-architecture/planning/image/high-level-planning-diagram-miyake-reviewed.drawio.svg +++ b/docs/design/autoware-architecture/planning/image/high-level-planning-diagram-miyake-reviewed.drawio.svg @@ -1,4 +1,4 @@ -<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1251px" height="754px" viewBox="-0.5 -0.5 1251 754" content="<mxfile><diagram id="8qt1-HtFgWOiWtJ-FPd8" name="planning (v0.13.0)">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</diagram></mxfile>"> +<svg host="65bd71144e" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1251px" height="754px" viewBox="-0.5 -0.5 1251 754" content="<mxfile><diagram id="8qt1-HtFgWOiWtJ-FPd8" name="planning (v0.13.0)">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</diagram></mxfile>"> <defs/> <g> <rect x="990" y="102.05" width="260" height="190" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/> @@ -510,8 +510,8 @@ <path d="M 157.76 355.53 L 145.76 361.53 L 145.77 349.53 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> <path d="M 80 484.61 L 145.76 484.62" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> <path d="M 157.76 484.62 L 145.76 490.62 L 145.77 478.62 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> - <path d="M 94.56 612.23 L 160 612.01" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> - <path d="M 82.56 612.27 L 94.54 606.23 L 94.58 618.23 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 80.32 642.27 L 145.76 642.06" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 157.76 642.02 L 145.78 648.06 L 145.74 636.06 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> <rect x="300" y="180.05" width="125" height="19" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/> <rect x="300" y="180.05" width="125" height="19" fill="#bac8d3" stroke="#23445d" pointer-events="none"/> <g transform="translate(-0.5 -0.5)"> @@ -818,6 +818,8 @@ <path d="M 545 697.76 L 539 685.76 L 551 685.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> <path d="M 545 54 L 545 134.06" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> <path d="M 545 146.06 L 539 134.06 L 551 134.06 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 94.56 582.23 L 160 582.01" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> + <path d="M 82.56 582.27 L 94.54 576.23 L 94.58 588.23 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/> </g> <switch> <g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/> diff --git a/docs/design/autoware-architecture/planning/index-update.md b/docs/design/autoware-architecture/planning/index-update.md index 4ae86bd2b94..a01cdab6796 100644 --- a/docs/design/autoware-architecture/planning/index-update.md +++ b/docs/design/autoware-architecture/planning/index-update.md @@ -39,8 +39,8 @@ Autowareでは、このプラットフォーム観点から [microautonomy archi - **提供機能はモジュール化されており、誰でも機能の再利用や拡張が可能であること** - これはユーザーが期待するODDに対し、拡張機能によって対応できることを意味します。プラグインのような形で誰でも機能拡張ができれば、それぞれのニーズ(Lv4/Lv2自動運転、公道/私道走行、大型車両、小型ロボットなど)に合ったシステムが提供できます。 - ユーザーのニーズには、純粋な自動運転としての性能ではなく、限定されたODD(例えば障害物のない管理された私道)において可能な限り消費電力を下げることなども含まれます。この場合、モジュールをdisableさせることによって、ODDを限定する代わりに、処理負荷を下げることが可能です。 -- **人間のオペレータによって能力が拡張できること** - - オペレータによる補助も機能拡張の一つです。これにより、非常に複雑で困難なユースケースにおいても、人間の補助という機能拡張で対応できることを意味します。ここで具体的なオペレータの種類は定義しません。研究フェーズにおいては車に同乗している人かもしれませんし、自動運転サービス提供者にとっては非常時にのみ繋がる遠隔オペレータかもしれません。 +- **オペレータとの連携によって能力が拡張できること** + - オペレータによる補助も機能拡張の一つです。これにより、非常に複雑で困難なユースケースにおいても、人間の補助という機能拡張で対応できることを意味します。ここでは具体的なオペレータの種類は定義されません。研究フェーズにおいては車に同乗している人かもしれませんし、自動運転サービスにおいては非常時に繋がる遠隔オペレータかもしれません。 **Non-goals:** @@ -49,9 +49,9 @@ Planning Componentはthird-partyのモジュールによって機能拡張され - ユーザーが必要とする機能の全てをAutoware単独で提供すること - 自動運転としての完全な機能と性能 - 人間の性能を常に上回る性能 -- 「絶対に衝突しない」という機能 +- 完全な安全性 -なお、「絶対に衝突しない」といった性能は現在の目標ではありませんが、外部モジュールとの連携や将来の強化によってそのような状態を達成できるようなアーキテクチャを作成することは我々の目標です。そしてこれらの要求は自動運転プラットフォームの視点から来ているものであり、一般的な自動運転システムにおけるPlanning Componentへの要求としては一般的ではないかもしれません。 +注意として、これらの要求は自動運転プラットフォームの視点から来ているものであり、一般的な自動運転システムにおけるPlanning Componentへの要求として一般的なものではないありません。 <!-- ## Requirements @@ -69,15 +69,15 @@ WIP -->  +ここではmicroautonomyアーキテクチャに従い、モジュール型のシステムフレームワークを採用しています。Planningの機能はモジュールとして実装され、これらのモジュールは与えられたユースケースに応じて動的/静的にload/unloadされます。これには例えば、レーンチェンジ、交差点、横断歩道モジュールなどが含まれます。 + Planning コンポーネントは以下のようないくつかのサブコンポーネントから構成されます。 -- **Mission Planning**: 地図情報を基に、自動運転ミッションの設定や現在位置からゴールまでのルート計算を行います。 +- **Mission Planning**: 地図情報を基に、自動運転ミッションの設定や現在位置からゴールまでのルート計算を行います。既存のサービスと比較すると、FMS(Fleet Management System)のミッション管理やカーナビのルート探索機能などを担当するモジュールです。 - **Planning Modules**: 定められたミッションに対して、目標軌道やウインカーなどの自車の振る舞いの計画を行います。このサブコンポーネントは、機能を担当するいくつかのモジュールから成り立っています。これらのモジュールは便宜上、BehaviorとMotionの2つに分類されます。 - - **Behavior Planner**: 交通ルールや安全を考慮して適切な経路を計算します。 - - **Motion Planner**: Behavior Plannerと連携し、車両運動や乗り心地を考慮した目標軌道を計算します。 -- **Validation**: 計算された目標軌道を検証し、安全性の確保や緊急時の対応を担います。 - -ここではmicroautonomyアーキテクチャに従い、モジュール型のシステムフレームワークを採用しています。Planningの機能はモジュールとして実装され、これらのモジュールは与えられたユースケースに応じて動的/静的にload/unloadされます。これには例えば、レーンチェンジ、交差点、横断歩道モジュールなどが含まれます。 + - **Behavior**: 交通ルールや安全を考慮して適切な経路を計算します。レーンチェンジや交差点進入、信号停止などの安全確認および実行判断を行います。 + - **Motion**: Behaviorと連携し、車両運動や乗り心地を考慮した目標軌道を計算します。具体的には、経路形状を計算する横方向計画と、速度を計算する縦方向計画の機能からなります。 +- **Validation**: 計算された目標軌道を検証し、安全性の確保や緊急時の対応を担います。Planningの計算した軌道が不適切な場合は、SystemにEmergencyを通知したり、暫定的な軌道生成を行います。 ### Remarkable points @@ -103,7 +103,7 @@ Human Machine Interfaceとの連携は、人間オペレータとの連携を円 Autowareの全体設計において、Planningを孤立したComponentとして設計する際のトレードオフに注意が必要です。Planning、Perception、Localization、Controlなどのコンポーネントを分離して開発することで、サードパーティ製のコンポーネントとの連携が容易になります。しかし、パフォーマンスと拡張性の間にはトレードオフが存在します。例えば、Perceptionコンポーネントは理想的にはPlanningコンポーネントが必要とするオブジェクトだけを認識すれば十分ですが、コンポーネントを分離することでそのような密接なコミュニケーションが難しくなり、不要なオブジェクトに対しても処理を実行する必要があります。また、計画と制御を分離すると、計画時に車両の運動性能を考慮することが難しくなるという性能面の欠点があります。これを補うためには、インターフェースの情報量を増やすか、計算負荷を増やすなどの対応が必要になります。 -## How to extend/corporate with new features (WIP) +## Customize features Planning Componentのデザインの最も重要な機能の一つが、外部モジュールとの連携です。以下の図に示すように外部の機能を組み込む際にはいくつかの方法があります。 @@ -113,7 +113,7 @@ Planning Componentのデザインの最も重要な機能の一つが、外部 ユーザーはモジュールとして作成されたPlanningの機能を置き換えたり、機能追加をすることができます。これは最も一般的な機能の拡張方法です。これによって、求めるODDにおいて不足している機能を追加したり、逆に既存の機能をよりシンプルなものに変更したりすることができます。 -ただし、この機能追加を行うためには、各モジュールのインターフェースが適切に整理されている必要があります。2023年11月現在では、このような理想的なモジュールの仕組みは提供されておらず、いくつかの制限があります。詳細はReference Implementationの [How to add new modules in the current implementation](#how-to-add-new-modules-in-the-current-implementation) を確認してください。 +ただし、この機能追加を行うためには、各モジュールのインターフェースが適切に整理されている必要があります。2023年11月現在では、このような理想的なモジュールの仕組みは提供されておらず、いくつかの制限があります。詳細はReference Implementationの [Customize features in the current implementation](#customize-features-in-the-current-implementation) を確認してください。 ### Planningのサブコンポーネントを置き換える @@ -145,7 +145,7 @@ This section describes the inputs and outputs of the Planning Component and of i - **From Human Machine Interface (HMI)** - Feature execution: Allows for executing/authorizing autonomous driving operations, such as lane changes or entering intersections, by human operators. - **From API Layer** - - Goal: Represents the final position that the Planning Component aims to reach. + - Destination (Goal): Represents the final position that the Planning Component aims to reach. - Checkpoint: Represents a midpoint along the route to the destination. This is used during route calculation. - Velocity limit: Sets the maximum speed limit for the vehicle. @@ -275,7 +275,7 @@ One of the classic approach to Planning involves dividing it into "Behavior", wh To understand this background, this [previously discussed document](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/main/docs/design/software_architecture/Planning/DesignRationale.md) may be useful. -### How to add new modules in the current implementation +### Customize features in the current implementation 現時点の実装でもモジュールレベルの機能の追加は可能ですが、全ての機能に対して統一的なインターフェースは提供されていません。モジュールレベルでの拡張を行うための、現時点での実装方法について簡単に説明します。 From 779aa4cb69e1d96090483de30a83aa05f8255f2b Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Tue, 28 Nov 2023 20:41:09 +0900 Subject: [PATCH 17/19] update Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- .../planning/index-update.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/design/autoware-architecture/planning/index-update.md b/docs/design/autoware-architecture/planning/index-update.md index a01cdab6796..ba45d36f96a 100644 --- a/docs/design/autoware-architecture/planning/index-update.md +++ b/docs/design/autoware-architecture/planning/index-update.md @@ -24,11 +24,11 @@ ## Goals and non-goals -我々の目標は、純粋な自動運転システムの開発ではなく、自動運転"プラットフォーム"の開発です。このプラットフォームでは、誰もが自動運転の機能を自由に拡張できます。 +我々の目標は、純粋な自動運転システムの開発ではなく、自動運転「プラットフォーム」の開発です。このプラットフォームでは、誰もが自動運転の機能を自由に拡張できます。 Autowareでは、このプラットフォーム観点から [microautonomy architecture](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts) の概念を提唱しています。Microautonomyとは、適切な機能のモジュール化やインターフェースの明確な定義に基づき、高い拡張性に焦点を当てた自動運転システムの設計コンセプトです。 -これを踏まえ、Planning componentの設計方針は、世の中のすべての複雑な自動運転のユースケースを解決することではなく(なぜならそれは非常に難しい問題だからです)、**ユーザーのニーズに合わせてカスタマイズでき、誰でも容易に機能拡張が可能なPlanning開発プラットフォームを提供すること**に設定されています。我々が提供するプラットフォームが様々なニーズに対する拡張性を獲得した結果、最終的に多くの複雑なユースケースが解決できるようになると信じています。 +これを踏まえ、Planning componentの設計方針は、世の中のすべての複雑な自動運転のユースケースを解決することではなく(なぜならそれは非常に難しい問題だからです)、**ユーザーのニーズに合わせてカスタマイズでき、誰でも容易に機能拡張が可能なPlanning開発プラットフォームを提供すること** に設定されています。我々が提供するプラットフォームが様々なニーズに対する拡張性を獲得した結果、最終的に多くの複雑なユースケースが解決できるようになると信じています。 この方針を明確にするため、以下にGoalとNon-Goalをリスト化します。 @@ -36,9 +36,9 @@ Autowareでは、このプラットフォーム観点から [microautonomy archi - **自動運転の走行に必要な最低限の基本機能を持つこと** - Planning Componentは、機能拡張以前に、自動運転のために必須な機能を提供する必要があります。これには、走る、止まる、曲がるといった基本計画に加え、比較的安全でシンプルな状況での車線変更や信号停止などの機能が含まれます。 -- **提供機能はモジュール化されており、誰でも機能の再利用や拡張が可能であること** +- **提供機能はモジュール化されており、誰でも機能の拡張が可能であること** - これはユーザーが期待するODDに対し、拡張機能によって対応できることを意味します。プラグインのような形で誰でも機能拡張ができれば、それぞれのニーズ(Lv4/Lv2自動運転、公道/私道走行、大型車両、小型ロボットなど)に合ったシステムが提供できます。 - - ユーザーのニーズには、純粋な自動運転としての性能ではなく、限定されたODD(例えば障害物のない管理された私道)において可能な限り消費電力を下げることなども含まれます。この場合、モジュールをdisableさせることによって、ODDを限定する代わりに、処理負荷を下げることが可能です。 + - また、限定されたODD(例えば障害物のない管理された私道)において、機能を縮小できることも重要です。モジュール化された機能をDisableすることによって、機能を限定する代わりに処理負荷や消費電力を削減できます。 - **オペレータとの連携によって能力が拡張できること** - オペレータによる補助も機能拡張の一つです。これにより、非常に複雑で困難なユースケースにおいても、人間の補助という機能拡張で対応できることを意味します。ここでは具体的なオペレータの種類は定義されません。研究フェーズにおいては車に同乗している人かもしれませんし、自動運転サービスにおいては非常時に繋がる遠隔オペレータかもしれません。 @@ -46,7 +46,7 @@ Autowareでは、このプラットフォーム観点から [microautonomy archi Planning Componentはthird-partyのモジュールによって機能拡張されることを想定しています。したがって、以下はAutowareのPlanning Component単体の目標から除外されます。 -- ユーザーが必要とする機能の全てをAutoware単独で提供すること +- ユーザーが必要とする機能の全てをAutoware単体で提供すること - 自動運転としての完全な機能と性能 - 人間の性能を常に上回る性能 - 完全な安全性 @@ -79,9 +79,9 @@ Planning コンポーネントは以下のようないくつかのサブコン - **Motion**: Behaviorと連携し、車両運動や乗り心地を考慮した目標軌道を計算します。具体的には、経路形状を計算する横方向計画と、速度を計算する縦方向計画の機能からなります。 - **Validation**: 計算された目標軌道を検証し、安全性の確保や緊急時の対応を担います。Planningの計算した軌道が不適切な場合は、SystemにEmergencyを通知したり、暫定的な軌道生成を行います。 -### Remarkable points +### Highlights -このハイレベルデザインにおいて、Goalsに対する重要な設計として、以下を挙げます。 +このハイレベルデザインにおける重要なポイントを以下に列挙します。 #### Modulation of each function @@ -162,8 +162,8 @@ This section describes the inputs and outputs of the Planning Component and of i - **To API Layer** - Planning factors: Provides information about the reasoning behind the current planning behavior. This may include the position of target objects to avoid, obstacles that led to the decision to stop, and other relevant information. -### Internal interface in the planning component +### Internal interface in the planning component - **Mission Planning to Scenario Planning** - Route: Offers guidance for the path that needs to be followed from the starting point to the destination. This path is determined based on information such as lane IDs defined on the map. At the route level, it doesn't explicitly indicate which specific lanes to take, and the route can contain multiple lanes. - **Behavior Planning to Motion Planning** From 88dfedac08c8c3fb822451d7a523b8912d65e6af Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Wed, 29 Nov 2023 13:46:35 +0900 Subject: [PATCH 18/19] update Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- docs/design/autoware-architecture/planning/index-update.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/design/autoware-architecture/planning/index-update.md b/docs/design/autoware-architecture/planning/index-update.md index ba45d36f96a..2ae9457e8c8 100644 --- a/docs/design/autoware-architecture/planning/index-update.md +++ b/docs/design/autoware-architecture/planning/index-update.md @@ -24,7 +24,7 @@ ## Goals and non-goals -我々の目標は、純粋な自動運転システムの開発ではなく、自動運転「プラットフォーム」の開発です。このプラットフォームでは、誰もが自動運転の機能を自由に拡張できます。 +我々の目標は、純粋な自動運転システムの開発ではなく、自動運転「プラットフォーム」の提供です。このプラットフォームでは、誰もが自動運転の機能を自由に拡張できます。 Autowareでは、このプラットフォーム観点から [microautonomy architecture](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts) の概念を提唱しています。Microautonomyとは、適切な機能のモジュール化やインターフェースの明確な定義に基づき、高い拡張性に焦点を当てた自動運転システムの設計コンセプトです。 From 9084240a503a77fca9bb27c8e62f69e104604e36 Mon Sep 17 00:00:00 2001 From: Takamasa Horibe <horibe.takamasa@gmail.com> Date: Wed, 6 Dec 2023 12:18:51 +0900 Subject: [PATCH 19/19] update Signed-off-by: Takamasa Horibe <horibe.takamasa@gmail.com> --- .../{index-update.md => index-japanese.md} | 23 +- .../autoware-architecture/planning/index.md | 235 ++++++++---------- 2 files changed, 104 insertions(+), 154 deletions(-) rename docs/design/autoware-architecture/planning/{index-update.md => index-japanese.md} (97%) diff --git a/docs/design/autoware-architecture/planning/index-update.md b/docs/design/autoware-architecture/planning/index-japanese.md similarity index 97% rename from docs/design/autoware-architecture/planning/index-update.md rename to docs/design/autoware-architecture/planning/index-japanese.md index 2ae9457e8c8..194dfdc21d1 100644 --- a/docs/design/autoware-architecture/planning/index-update.md +++ b/docs/design/autoware-architecture/planning/index-japanese.md @@ -1,20 +1,6 @@ # Planning component design -<!-- -- discussionsはトレードオフ選定とかにしたい -- サードパーティによって拡張というよりは、誰でも拡張できるって言い回しのほうが良いはず -- mission plannerの使われ方を重点的に考えよう。FMSとして機能が外だしされることがあるから、これは別れてるのよ。 -- ハイレベルなデザインと詳細なデザインではなく、アーキテクチャのためのデザイン(要求ベース、これがやりたい)と、アーキテクチャ(詳細なフロー)ができるはず。 -- デザインの部分に、ポリシーによる変更がわかるような書き方があると良い。ポリシーA(右側走行)になったときに、いくつかのモジュールが特定の設定で起動する。どう図にするか。。。 -- このポリシーに対して、何がどうかわるかという例があるといい。自動運転レベルが変わったときに、HMIとの連携がこう変わって、軌道モジュールがこう変わる、とか。 -- ハイレベルに対するユースケースを上げる -- 車両の振る舞いのユースケース - - 話ゴールやチェくポイント、NGポイントを与えてplanning内部でルートを計算して進む / 渋滞情報を加味したルートを外部から与えて走行する -開発者のユースケース - - 中の作りの話(実装や設計レベル):機能の差し替えができていてほしいので(レーンチェンジAとレーンチェンジBとか)、柔軟に変更できる必要があり、各機能はモジュールとして実装される。 - --> - -## Context and scope +## Purpose 自動運転システムにおける Planning コンポーネントの役割は、与えられたミッションを満たすために、安全で交通ルールに基づいた自動運転車両の目標軌道(経路と速度)を生成することです。 @@ -53,13 +39,6 @@ Planning Componentはthird-partyのモジュールによって機能拡張され 注意として、これらの要求は自動運転プラットフォームの視点から来ているものであり、一般的な自動運転システムにおけるPlanning Componentへの要求として一般的なものではないありません。 -<!-- ## Requirements - -WIP - -## Assumptions - -WIP --> ## High level design diff --git a/docs/design/autoware-architecture/planning/index.md b/docs/design/autoware-architecture/planning/index.md index c3bdc02a159..98db42aacf1 100644 --- a/docs/design/autoware-architecture/planning/index.md +++ b/docs/design/autoware-architecture/planning/index.md @@ -1,157 +1,106 @@ # Planning component design -- discussionsはトレードオフ選定とかにしたい -- サードパーティによって拡張というよりは、誰でも拡張できるって言い回しのほうが良いはず -- mission plannerの使われ方を重点的に考えよう。FMSとして機能が外だしされることがあるから、これは別れてるのよ。 -- ハイレベルなデザインと詳細なデザインではなく、アーキテクチャのためのデザイン(要求ベース、これがやりたい)と、アーキテクチャ(詳細なフロー)ができるはず。 -- デザインの部分に、ポリシーによる変更がわかるような書き方があると良い。ポリシーA(右側走行)になったときに、いくつかのモジュールが特定の設定で起動する。どう図にするか。。。 -- このポリシーに対して、何がどうかわるかという例があるといい。自動運転レベルが変わったときに、HMIとの連携がこう変わって、軌道モジュールがこう変わる、とか。 -- ハイレベルに対するユースケースを上げる -- 車両の振る舞いのユースケース - - 話ゴールやチェくポイント、NGポイントを与えてplanning内部でルートを計算して進む / 渋滞情報を加味したルートを外部から与えて走行する - 開発者のユースケース - - 中の作りの話(実装や設計レベル):機能の差し替えができていてほしいので(レーンチェンジAとレーンチェンジBとか)、柔軟に変更できる必要があり、各機能はモジュールとして実装される。 +## Purpose -## Purpose of this document +The role of the Planning Component in autonomous driving systems is to generate a target trajectory (path and speed) for autonomous vehicles that is safe and following traffic rules, in order to fulfill a given mission. -This document outlines the high-level design strategies, goals and related rationales in the development of the Planning Component. Through this document, it is expected that all OSS developers will comprehend the design philosophy, goals and constraints under which the Planning Component is designed, and participate seamlessly in the development. +This document summarizes the requirements and design of planning in Autoware. This will enable developers to understand how the Planning Component is designed and how to extend its capabilities. -このドキュメントは Planning コンポーネントの開発における目標、ハイレベルな設計方針、およびそれらの議論ポイントをまとめています。このドキュメントを通じて、すべてのOSS開発者はPlanning コンポーネントがどのような設計思想、目標、制約の下で設計されているかを理解することができ、それによってスムーズに開発に参加することができます。 - -Furthermore, detailed design of the reference imprementations and provided featres are are included in the latter part of this document, while this information might be managed separately in the future. This allows developers and users to understand what is currently available with the Planning Component, how to utilize, expand, or add to its features. - -ドキュメントの後半では、詳細設計としてリファレンス実装や提供機能の一覧も記載しています(この情報は将来的に別のドキュメントで管理されるかもしれません)。これにより、開発者やユーザーは Planning コンポーネントの現在の実装、およびそれらをどのように活用、拡張するかを理解することができます。 +The first half of the document discusses high-level requirements and design, while the latter half covers actual implementations and provided functionalities. ## Goals and non-goals -The role of the Planning component is to generate a trajectory (path and velocity) of the self-driving vehicle that is safe and well-regulated while satisfying the given mission. - -Planning コンポーネントの役割は、与えられたミッションを満たしつつ、安全で交通ルールに基づいた自動運転車両の目標軌道(経路と速度)を生成することです。 +Our goal is not the development of just an autonomous driving system, but the provision of an autonomous driving "platform." On this platform, anyone can extend the functionalities of autonomous driving based on their needs. -In our overall design, we emphasize the concept of [microautonomy architecture](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts). This term refers to a design approach that focuses on the proper modularization of functions, clear definition of interfaces between these modules, and as a result, high expandability of the system. Given this context, the goal of the Planning component is set not to solve every conceivable complex use case (although we do aim to support basic ones), but rather to provide a platform that can be customized to the user's needs and can facilitate the development of additional features. +In Autoware, we employ the concept of a [microautonomy architecture](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts). Microautonomy is a design concept for autonomous driving systems focused on high extensibility, based on appropriate functional modularity and clear interface definitions. -Planningの全体設計において、我々は [microautonomy architecture](https://autowarefoundation.github.io/autoware-documentation/main/design/autoware-concepts) の概念を重視しています。microautonomy とは、適切な機能のモジュール化やインターフェースの明確な定義に基づき、システムの高い拡張性を焦点を当てた設計コンセプトです。そのため Planning component の目標は、すべての考えられる複雑なユースケースを解決することではなく(基本的なものはサポートすることを目指していますが)、ユーザーのニーズに合わせてカスタマイズでき、第三者によって機能が容易に追加可能なプラットフォームを提供することに設定されています。 +With this in mind, the design policy for the Planning component is not to solve all the complex use cases of autonomous driving (as that is a very challenging problem), but **to provide a Planning development platform that can be customized according to user needs and easily extended by anyone**. We believe that as our platform gains extensibility to various needs, many complex use cases will ultimately be resolved. -To clarify the design concepts, the following points are listed as goals and non-goals. - -この設計コンセプトを明確にするため、以下に Goal と Non-Goal をリスト化します。 +To clarify this policy, Goals and Non-Goals are listed below. **Goals:** -- The basic functions are provided so that a simple Operational Design Domain (ODD) can be defined. - - **TODO**: need more information for the "simple ODD" -- The functionality is modularized to accommodate the third-party components. That is, a complicated or realistic ODD needs not be defined by the basic functions provided by default. - - **TODO**: need to clarify the meaning of the "realistic ODD" -- The capability is extensible with the third-party components or the decision of human operators. - -<!-- Not sure what the following says. --> - <!-- - The mechanism and policy are separated to allow the system or operators to change the behavior of the ego vehicle. Ultimately speaking, the policy can be set to crash an obstacle and the mechanism always follows. Otherwise, the system is not safe from the design point of view. --> - -- シンプルな運用設計領域(ODD)を定義できるレベルの基本的なplanning機能を提供する - - **TODO**: シンプルの定義はもう少し詳しく書いたほうが良いかも -- サードパーティによる機能の追加が容易なように、planningの機能はモジュール化されている。 -- 人間の操作者の決定やサードパーティのコンポーネントによって機能を拡張できる。 +- **To have the minimum basic functions necessary for autonomous driving** + - Prior to extension of functionalities, the Planning Component must offer essential functionalities for autonomous driving. This includes basic planning like moving forward and backward, stopping, and turning, as well as lane changes and obstacle avoidance in relatively safe and simple situations. +- **Provided functionalities are modularized, and anyone can extend them** + - This means being able to respond to the expected ODD with extended functionalities. If anyone can extend functionalities like a plugin, systems tailored to various needs can be provided (e.g., Lv4/Lv2 autonomous driving, public/private road driving, large vehicles, small robots). + - Additionally, the ability to reduce functionalities for limited ODDs (e.g., obstacle-free managed private roads) is important from the platform point of view. Disabling modularized functions can reduce power consumption or requirement for sensing systems, which can fits to someone's needs. +- **Capability enhancement through cooperation with operators** + - Assistance by operators is also a form of functional extension. This means that even in very complex and difficult use cases, the system can cope through functional extension by human assistance. The specific type of operator is not defined here. It might be a person accompanying in the vehicle during the prototype development phase or a remote operator connected in emergencies during autonomous driving services. **Non-goals:** -- The Planning component is not self-contained but can be extended and enhanced with third parties. -- The Planning component is not aimed at the complete functionality and capability. -- The Planning component is not designed to always outperform human drivers. -- The Planning component is not capable of “never crashes”. +The Planning Component is intended to be extended by third-party modules. Therefore, the following are excluded from the goals of Autoware's Planning Component alone: -- Planningコンポーネントは自己完結している必要はない。ただし、サードパーティと共に拡張・強化することができることは必要。 -- Planningコンポーネントは自動運転としての完全な機能を目指しているわけではない。 -- Planningコンポーネントは常に人間のドライバーを上回るように設計されているわけではない。 -- Planningコンポーネントは「絶対に衝突しない」という性能を持っているわけではない。 +- Providing all the functionalities needed by users solely with Autoware +- Complete functionality and performance as an autonomous driving system +- Performance consistently exceeding human capabilities or providing complete safety. -While performance such as "never crashes" is not a present goals, we need to create an architecture that can potentially achieve such a state with third-party components or decision of human operators or future enhancement. +Note that these requirements come from the perspective of an autonomous driving "platform" and are not generally applicable to the Planning Component of a typical autonomous driving system. -「絶対に衝突しない」といった性能は現在の目標ではありませんが、サードパーティのコンポーネントや人間の操作者の決定、または将来の強化によってそのような状態を達成できるようなアーキテクチャを作成することは我々の目標です。 - -## Requirements - -WIP +## High level design -## Assumptions +This diagram shows the high-level architecture of the Planning Component. Note that this is an ideal high-level design and the current implementation does not fully comply with it. Please refer to the latter part for detailed implementations. -WIP +<!--  --> -## High level design + -This diagram describes the high-level architecture of the Planning Component. +Here, we adopt a modular system framework following the microautonomy architecture. The functions of Planning are implemented as modules, which are dynamically/statically loaded/unloaded according to the given use cases. This includes, for example, lane change, intersection, and pedestrian crossing modules. - - +The Planning Component consists of several sub-components such as: -The Planning component consists of the following sub-components: +- **Mission Planning**: Calculates routes from the current location to the goal for autonomous driving missions based on map information. Comparing to existing services, this module takes on functions like FMS (Fleet Management System) mission management or car navigation route searching. +- **Planning Modules**: Plans the behavior of the vehicle, such as target trajectory and turn signals, for the defined mission. This sub-component consists of several modules responsible for functionalities. These modules are conveniently categorized into Behavior and Motion. + - **Behavior**: Calculates appropriate routes considering traffic rules and safety. It handles safe confirmations and execution decisions for lane changes, entering intersections, and stopping at signals. + - **Motion**: Calculates target trajectories considering vehicle motion and ride comfort in collaboration with Behavior modules. Specifically, it consists of lateral planning that calculates route shapes and longitudinal planning that calculates speeds. +- **Validation**: Validates the calculated target trajectories, ensuring safety and responding in emergencies. If the trajectory calculated by Planning is inappropriate, it notifies the System of an Emergency or generates a provisional trajectory. -Planning コンポーネントはいくつかのサブコンポーネントからなります。 +### Highlights -- **Mission Planning**: Calculates the route from a starting position and a given goal based on map information. -- **Scenario Planning**: Determines the trajectory based on the current scenario, such as Lane Driving or Parking. - - **Lane Driving**: Calculates the trajectory for driving within constructed lanes. - - **Behavior Planner**: Calculates suitable path based on safety considerations and traffic rules. - - **Motion Planner**: Calculates suitable trajectory for the vehicle by taking into account safety factors, vehicle motion considerations, and instructions from the behavior planner. - - **Parking**: Calculates the trajectory for parking in unstructured areas. -- **Validation**: Verifies the safety of the trajectory. +Important points in this high-level design are listed below. -- **Mission Planning**: 地図情報をもとに、初期位置からゴールまでのルートを計算します。 -- **Scenario Planning**: Lane Driving や Parkingなどのシナリオに基づいて、適切な目標軌道を計算します。 - - **Lane Driving**: レーン構造が存在する場所において、適切な目標軌道を計算します。 - - **Behavior Planner**: 交通ルールや安全を考慮して適切な経路を計算します。 - - **Motion Planner**: Behavior Plannerの出力を元に、車両運動や乗り心地を考慮した目標軌道を計算します。 - - **Parking**: 駐車場などのフリースペース環境において、適切な目標軌道を計算します。 -- **Validation**: 計算された目標軌道の安全性を検証します。 +#### Modulation of each function -Following the microautonomy architecture, we adopt a modular system framework where the tasks are implemented as modules that can be dynamically loaded and unloaded to achieve different features depending on the given use cases. For instance, the Behavior Planning component includes modules such as lane change, intersection, and crosswalk modules. +Functions necessary for Planning, such as route generation, lane changes, intersections, and pedestrian crossings, are managed as modules. These modules are provided with standardized interfaces, following which anyone can add or extend modules. Details of the interfaces will be discussed later. -ここでは microautonomy アーキテクチャに従い、モジュール型のシステムフレームワークを採用しています。planningの機能はモジュールとして実装され、これらのモジュールは与えられたユースケースに応じて動的にロードおよびアンロードされます。例えば、behavior planning のサブコンポーネントには、レーンチェンジ、交差点、横断歩道モジュールなどのモジュールが含まれています。 +#### Separation of Mission Planning sub-component -### Discussions -> わからん。trade-off選定とかにしよう +The role of Mission Planning is to substitute for existing services like FMS (Fleet Management System). By complying with the high-level defined interfaces of Mission Planning, easy integration with these third-party functions can be achieved. -The following provides discussion points on trade-offs in the architecture. From this information, you can see the current design limitation, challenges, and potential improvement. +#### Separation of Validation sub-component -以下では、アーキテクチャのトレードオフについての議論のポイントを提供します。この情報から、現在の設計の限界、課題、そして潜在的な改善点が見えてきます。 +Given the nature of the Planning Component, which can be easily extended by anyone, it is difficult to ensure the expected level of safety in each function. The Validation function of Planning is managed separately from modules that actually perform planning, ensuring a certain level of safety even if arbitrary changes are made to the modules. -**Separation of planning and other components** -By developing the planning, perception, localization, and control components separately, it becomes easy to collaborate with third-party components in the component level. However, there's a trade-off between performance and extensibility here. For instance, a perception component would ideally perform recognition and motion prediction only for the objects that the planning component needs, but separating the components hinders such close communication. Additionally, separating planning and control makes it harder to consider vehicle motion performance when planning. To compensate for this, it's necessary to either increase the information exchanged via the interface or increase the computation load. +#### Interface for HMI (Human Machine Interface) -**planningと他のコンポーネントの分離** -planning、perception、localization、controlなどのコンポーネントを分離して開発することで、サードパーティ製のコンポーネントとの連携が容易になります。しかし、ここではパフォーマンスと拡張性の間にトレードオフがあります。例えば、perception コンポーネントは理想的には planning コンポーネントが必要とするオブジェクトだけを認識すれば十分ですが、コンポーネントを分離することでそのような密接なコミュニケーションが難しくなり、不要なオブジェクトに対しても処理を実行する必要があります。また、計画と制御を分離すると、計画時に車両の運動性能を考慮することが難しくなるという性能面の欠点があります。これを補うためには、インターフェースの情報量を増やすか、計算負荷を増やすなど対応が必要になります。 +The integration with Human Machine Interface is essential for smooth cooperation with human operators. Through the interfaces between these components, coordination with accompanying operators or remote monitoring systems is enabled. -**Introducing the Scenario Planning layer** -There are different requirements for interfaces between driving in well-structured lanes and driving in a free-space area like a parking lot. For example, while Lane Driving can handle routes with map IDs, this is not appropriate for planning in free space. The mechanism that switches planning sub-components at the scenario level (Lane Driving, Parking, etc) enables a flexible design of the interface, however, it has a drawbacks of the reuse of modules across different scenarios. +#### Trade-offs for the separation of planning and other components -**Scenario Planning の導入** -整備されたレーンを走行する場合と、駐車場のような自由空間での走行では、インターフェースに対する情報要求が異なります。例えば、レーン走行中は地図のレーン情報を処理できますが、これは自由空間での計画には適していません。シナリオレベル(Lane Driving / Parking)で Planning サブコンポーネントを切り替えるメカニズムは、インターフェースの柔軟な設計を可能にしますが、異なるシナリオ間でモジュールを再利用できなくなるという欠点もあります。 +In the overall design of Autoware, attention is needed for the trade-offs when designing Planning as an isolated Component. By developing components such as Planning, Perception, Localization, and Control separately, cooperation with third-party components becomes easier. However, there are trade-offs between performance and extensibility. For example, ideally, the Perception component should only recognize objects needed by the Planning component, but separating components makes such close communication difficult, necessitating processing even unnecessary objects. Also, separating planning and control has performance drawbacks, such as difficulty in considering vehicle dynamics during planning. To compensate for this, increasing the amount of information in interfaces or increasing computational load is necessary. -**Separation of Behavior and Motion** -One of the classic approach to Planning involves dividing it into "Behavior", which decides the action, and "Motion", which determines the final movement. However, this separation implies a trade-off with performance, as performance tends to degrade with increasing separation of functions. For example, Behavior needs to make decisions without prior knowledge of the computations that Motion will eventually perform, which generally results in conservative decision-making. On the other hand, if behavior and motion are integrated, motion performance and decision-making become interdependent, creating challenges in terms of expandability, such as when you wish to extend only the decision-making function to follow a regional traffic rules. +## Customize features -**Behavior と Motion の分離** -Planningコンポーネントを行動を決定する "Behavior" と、最終的な動きを決定する ”Motion” に分けることは古典的なアプローチの一つです。しかし、この方針にはパフォーマンスとのトレードオフが存在します。機能の分離が進むとパフォーマンスは一般的に低下する傾向があります。例えば、Behavior は、最終的に Motion が行う計算結果を知るより前に意思決定を行わなければならないため、一般的に保守的な意思決定が行われます。一方、BehaviorとMotionが一体化している場合、運動性能と意思決定が依存するため、例えば国ごとに異なる交通ルールに従うために意思決定機能を拡張する場合において運動性能を考慮する必要があるといった拡張性の課題が生じます。 +One of the most important features of the Planning Component design is its integration with external modules. As shown in the diagram below, there are several ways to incorporate external functionalities. -To understand this background, this [previously discussed document](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/main/docs/design/software_architecture/Planning/DesignRationale.md) may be useful. + -### Mechanism and policy +### 1. Adding New Modules to the Planning Component -In planning, several policies are defined to achieve various user's needs and ODDs. For example, in terms of the level of autonomous driving, Planning provides the following policies. +Users can replace or add functionalities to Planning as modules. This is the most common method of extending functionalities. This allows for the addition of missing functionalities in the desired ODD or, conversely, the simplification of existing functionalities. -- **Fully-autonomous** that delegates all decision makings to the system, thus the system is responsible for the safety. -- **Semi-autonomous** that delegates most of decision makings to the system but the rest of decision makings strictly defined remain with the human operator, thus both the system and the human operator are responsible for the safety. -- **Motion-autonomous** that delegates only the low-level motion plan to the system, while high-level mission and behavior plannings remain with the human operator, thus the human operator is responsible for the safety. +However, to add these functionalities, it is necessary that the interfaces of each module are properly organized. As of November 2023, such an ideal module system is not provided, and there are some limitations. For details, check the Reference Implementation section [Customize features in the current implementation](#customize-features-in-the-current-implementation). -Planningでは、様々なODDやユーザーのニーズを達成するために、いくつかのポリシーが定義されます。例えば、自動運転のレベルにおいて、Planningは以下のポリシーを提供します。 +### 2. Replacing Sub-components of Planning -- **Fully-autonomous** :すべての意思決定をシステムに委ね、システムが安全性を担保します。 -- **Semi-autonomous**:ほとんどの意思決定をシステムに委ねますが、一部の意思決定は人間のオペレーターに委ねられ、システムと人間のオペレーターの両方が安全性を担保します。 -- **Motion-autonomous**:低レベルの運動計画のみをシステムに委ね、高レベルのミッションと行動計画は人間のオペレーターが行い、人間のオペレーターが安全性を担保します。 +Some users may be interested in collaboration and extension at the sub-component level. This could include, for example, replacing Mission Planning with an existing FMS service, or replacing the route generation functionality with a third-party product while using the existing Validation functionality. -This policy can vary depending on the desired use cases and ODDs. It might be determined before driving begins, or it may switch dynamically during operation. The activated modules and their configuration change according to the policy to achieve the expected behaviors. Note that our goal is not necessarily to achieve only fully-autonomous. Depending on the expected ODD, sensor configuration, and sensor costs, we may also design the system on the premise of semi-autonomy. Our goal as an OSS platform is to design an architecture that allows for flexible changes to these policies. [Separation the mechanism and policy](https://en.wikipedia.org/wiki/Separation_of_mechanism_and_policy) allows us to modularize the planning components not only from the software point of view but also from the actual logic point of view. +Following the [Internal interface in the planning component](#internal-interface-in-the-planning-component) described later, it is possible to collaborate and extend at the sub-component level. While complex coordination with existing Planning functionalities is not feasible, it enables collaboration between some functionalities of the Planning Component and external modules. -このポリシーは、求められるユースケースやODDにより変わります。これは走行前に決定されるかもしれませんし、走行中に動的に切り替わる可能性もあります。起動するモジュールやその設定はポリシーに従って変更され、期待される行動が実現されます。ここで注意すべきは、我々の目標が必ずしも Fully-autonomous だけであるわけではないということです。期待するODD、センサーの構成、センサーコストにより、Semi-autonomous を前提としたシステム設計を行うこともあります。OSSプラットフォームとしての我々の目標は、これらのポリシーを柔軟に変更できるアーキテクチャを設計することです。メカニズムとポリシーを分離することで、ソフトウェアの観点だけでなく、実際のロジックの観点からも計画コンポーネントをモジュラ化することが可能になります。 +### 3. Replacing the Entire Planning Component -**TODO:** How to handle the policy of the autonomous level has not yet been finalized and needs further discussion. While it is believed that these can be implemented in collaboration with the Human-Machine Interface, further investigation and discussion is needed. +Companies or research labs developing autonomous driving Planning systems may be interested in evaluating the entire autonomous driving system by integrating their own Planning products with Autoware's Perception or Control modules. This is possible by replacing the entire Planning system. It is easy to replace by following the most robust and stable interfaces defined between components. However, coordination with existing planning modules is not possible. ## Component interface @@ -173,7 +122,7 @@ This section describes the inputs and outputs of the Planning Component and of i - **From Human Machine Interface (HMI)** - Feature execution: Allows for executing/authorizing autonomous driving operations, such as lane changes or entering intersections, by human operators. - **From API Layer** - - Goal: Represents the final position that the Planning Component aims to reach. + - Destination (Goal): Represents the final position that the Planning Component aims to reach. - Checkpoint: Represents a midpoint along the route to the destination. This is used during route calculation. - Velocity limit: Sets the maximum speed limit for the vehicle. @@ -202,18 +151,6 @@ This section describes the inputs and outputs of the Planning Component and of i - **Validation to Control Component** - Trajectory: Same as above but with some additional safety considerations. -## How to add new features (WIP) - -As mentioned in the goal session, this planning module is designed to be extensible by third-party components. When incorporating third-party components, there are several approaches. - -ゴールのセッションで述べたように、このPlanningコンポーネントはサードパーティのコンポーネントによる拡張を可能にするように設計されています。サードパーティのコンポーネントを組み込む際にはいくつかの方法があります。 - -As stated in the figure, you can completely replace the entire planning function, replace or add to the planning sub-components, or add new modules into the existing planning component. The latter part offers advantages as it allows for cooperation with the existing Planning functions, but it does require adherence to the detailed interfaces defined within the Planning Component. Conversely, while replacing the entire planning function enables you to utilize other components of Autoware, it does not allow for integration with the existing planning functions. For specific instructions on how to add new modules and expand its functionality, please refer to the forthcoming documentation or guidelines (WIP). - -図に示した通り、機能の追加には「Planning Componentを完全に置き換える」、「Planningのサブコンポーネントを置き換えるまたは追加する」、「既存のPlanningコンポーネントに新たなモジュールを追加する」方法があります。後者の方法ほど、既存のPlanning機能との連携が可能であるという利点がありますが、Planningコンポーネント内で定義されている詳細なインターフェースに従う必要があります。一方、Planning機能全体を置き換えることにより、大枠のinterfaceを揃えるだけでAutowareの他のコンポーネントを利用することができますが、既存のPlanning機能との統合はできません。新しいモジュールを追加し、その機能を拡張する具体的な指示については、近日公開予定のドキュメンテーションまたはガイドライン(作業中)をご参照ください。 - - - ## Detailed design ### Supported features @@ -264,9 +201,9 @@ As stated in the figure, you can completely replace the entire planning function The following diagram describes the reference implementation of the Planning component. By adding new modules or extending the functionalities, various ODDs can be supported. -_Note that some implementation does not adhere to the high-level architecture design and require updating._ +_Note that some implementation does not adhere to the high-level architecture design due to the difficulties of the implementation and require updating._ - + For more details, please refer to the design documents in each package. @@ -279,17 +216,16 @@ For more details, please refer to the design documents in each package. - [_pull_out_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/#pull-out) - _side_shift_ - [_behavior_velocity_planner_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_planner/): calculates max speed based on the traffic rules. - - [_detection_area_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_detection_area_module/) - - [_blind_spot_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_blind_spot_module/) - - [_cross_walk_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_crosswalk_module/) - - [_stop_line_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_stop_line_module/) - - [_traffic_light_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_traffic_light_module/) - - [_intersection_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_intersection_module/) - - [_no_stopping_area_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_no_stopping_area_module/) - - [_virtual_traffic_light_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_virtual_traffic_light_module/) - - [_occlusion_spot_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_occlusion_spot_module/) - - [_run_out_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_run_out_module/) - - [_no_drivable_lane_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_no_drivable_lane_module) + - [_detection_area_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_detection_area_module/docs/detection-area-design/) + - [_blind_spot_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_blind_spot_module/docs/blind-spot-design/) + - [_cross_walk_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_crosswalk_module/docs/crosswalk-design/) + - [_stop_line_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_stop_line_module/docs/stop-line-design/) + - [_traffic_light_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_traffic_light_module/docs/traffic-light-design/) + - [_intersection_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_intersection_module/docs/intersection-design/) + - [_no_stopping_area_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_no_stopping_area_module/docs/no-stopping-area-design/) + - [_virtual_traffic_light_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_virtual_traffic_light_module/docs/virtual-traffic-light-design/) + - [_occlusion_spot_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_occlusion_spot_module/docs/occlusion-spot-design/) + - [_run_out_](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_run_out_module/docs/run-out-design/) - [_obstacle_avoidance_planner_](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_avoidance_planner/): calculate path shape under obstacle and drivable area constraints - [_surround_obstacle_checker_](https://autowarefoundation.github.io/autoware.universe/main/planning/surround_obstacle_checker/): keeps the vehicle being stopped when there are obstacles around the ego-vehicle. It works only when the vehicle is stopped. - [_obstacle_stop_planner_](https://autowarefoundation.github.io/autoware.universe/main/planning/obstacle_stop_planner/): When there are obstacles on or near the trajectory, it calculates the maximum velocity of the trajectory points depending on the situation: stopping, slowing down, or adaptive cruise (following the car). @@ -302,6 +238,41 @@ For more details, please refer to the design documents in each package. - [_external_velocity_limit_selector_](https://autowarefoundation.github.io/autoware.universe/main/planning/external_velocity_limit_selector/): takes an appropriate velocity limit from multiple candidates. - [_motion_velocity_smoother_](https://autowarefoundation.github.io/autoware.universe/main/planning/motion_velocity_smoother/): calculates final velocity considering velocity, acceleration, and jerk constraints. +### Important information in the current implementation + +An important difference compared to the high-level design is the "introduction of the scenario layer" and the "clear separation of behavior and motion." These are introduced due to current performance and implementation challenges. Whether to define these as part of the high-level design or to improve them as part of the implementation is a matter of discussion. + +#### Introducing the Scenario Planning layer + +There are different requirements for interfaces between driving in well-structured lanes and driving in a free-space area like a parking lot. For example, while Lane Driving can handle routes with map IDs, this is not appropriate for planning in free space. The mechanism that switches planning sub-components at the scenario level (Lane Driving, Parking, etc) enables a flexible design of the interface, however, it has a drawbacks of the reuse of modules across different scenarios. + +#### Separation of Behavior and Motion + +One of the classic approach to Planning involves dividing it into "Behavior", which decides the action, and "Motion", which determines the final movement. However, this separation implies a trade-off with performance, as performance tends to degrade with increasing separation of functions. For example, Behavior needs to make decisions without prior knowledge of the computations that Motion will eventually perform, which generally results in conservative decision-making. On the other hand, if behavior and motion are integrated, motion performance and decision-making become interdependent, creating challenges in terms of expandability, such as when you wish to extend only the decision-making function to follow a regional traffic rules. + +To understand this background, this [previously discussed document](https://github.com/tier4/AutowareArchitectureProposal.proj/blob/main/docs/design/software_architecture/Planning/DesignRationale.md) may be useful. + +### Customize features in the current implementation + +While it is possible to add module-level functionalities in the current implementation, a unified interface for all functionalities is not provided. Here's a brief explanation of the methods of extending at the module level in the current implementation. + + + +#### Add new modules in behavior_velocity_planner or behavior_path_plnner + +ROS nodes such as [behavior_path_planner](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_path_planner/) and [behavior_velocity_planner](https://autowarefoundation.github.io/autoware.universe/main/planning/behavior_velocity_planner/) have a module interface available through plugins. By adding modules in accordance with the module interfaces defined in these ROS nodes, dynamic loading/unloading of modules becomes possible. For specific methods of adding modules, please refer to the documentation of each package. + +#### Add a new ros node in the planning component + +When adding modules in Motion Planning, it is necessary to create the module as a ROS Node and integrate it into the planning component. The current configuration involves adding information to the target trajectory calculated upstream, and the introduction of a ROS Node in this process allows for the expansion of functionality. + +#### Add or replace with scenarios + +The current implementation has introduced a scenario-level switching logic as a method for collectively switching multiple modules. This allows for the addition of new scenarios (e.g., highway driving). + +By creating a scenario as a ros node and aligning the scenario_selector ros node with it, the integration is complete. The benefit of this is that you can introduce significant new functionalities without affecting the implementation of other scenarios (like Lane Driving). However, it only allows for scenario-level coordination through scenario switching and does not enable coordination at the existing planning module level. + +<!-- ### Important Parameters | Package | Parameter | Type | Description | @@ -330,4 +301,4 @@ Currently, the supported modules are as follows. #### [2] Size of Path Points -Some functions do not support paths with only one point. Therefore, each modules should generate the path with more than two path points. +Some functions do not support paths with only one point. Therefore, each modules should generate the path with more than two path points. -->