Skip to content

Commit

Permalink
update arrangement
Browse files Browse the repository at this point in the history
Signed-off-by: Zulfaqar Azmi <[email protected]>
  • Loading branch information
zulfaqar-azmi-t4 committed Nov 8, 2023
1 parent 558c97b commit f0fa6c7
Showing 1 changed file with 29 additions and 61 deletions.
90 changes: 29 additions & 61 deletions planning/behavior_path_planner/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,17 @@ The `behavior_path_planner` module is responsible to generate

Behavior path planner has following scene modules.

| Name | Description | Details |
| :------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------- |
| Lane Following | this module generates reference path from lanelet centerline. | LINK |
| Avoidance | this module generates avoidance path when there is objects that should be avoid. | [LINK](./docs/behavior_path_planner_avoidance_design.md) |
| Avoidance By LC | this module generates lane change path when there is objects that should be avoid. | [LINK](./docs/behavior_path_planner_avoidance_by_lane_change_design.md) |
| Lane Change | this module is performed when it is necessary and a collision check with other vehicles is cleared. | [LINK](./docs/behavior_path_planner_lane_change_design.md) |
| External Lane Change | WIP | LINK |
| Goal Planner | this module is performed when ego-vehicle is in the road lane and goal is in the shoulder lane. ego-vehicle will stop at the goal. | [LINK](./docs/behavior_path_planner_goal_planner_design.md) |
| Pull Out | this module is performed when ego-vehicle is stationary and footprint of ego-vehicle is included in shoulder lane. This module ends when ego-vehicle merges into the road. | [LINK](./docs/behavior_path_planner_start_planner_design.md) |
| Side Shift | (for remote control) shift the path to left or right according to an external instruction. | [LINK](./docs/behavior_path_planner_side_shift_design.md) |
| Name | Description | Details |
| :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------- |
| Lane Following | this module generates reference path from lanelet centerline. | LINK |
| Avoidance | this module generates avoidance path when there is objects that should be avoid. | [LINK](./docs/behavior_path_planner_avoidance_design.md) |
| Dynamic Avoidance | WIP | LINK |
| Avoidance By Lane Change | this module generates lane change path when there is objects that should be avoid. | [LINK](./docs/behavior_path_planner_avoidance_by_lane_change_design.md) |
| Lane Change | this module is performed when it is necessary and a collision check with other vehicles is cleared. | [LINK](./docs/behavior_path_planner_lane_change_design.md) |
| External Lane Change | WIP | LINK |
| Start Planner | this module is performed when ego-vehicle is in the road lane and goal is in the shoulder lane. ego-vehicle will stop at the goal. | [LINK](./docs/behavior_path_planner_goal_planner_design.md) |
| Goal Planner | this module is performed when ego-vehicle is stationary and footprint of ego-vehicle is included in shoulder lane. This module ends when ego-vehicle merges into the road. | [LINK](./docs/behavior_path_planner_start_planner_design.md) |
| Side Shift | (for remote control) shift the path to left or right according to an external instruction. | [LINK](./docs/behavior_path_planner_side_shift_design.md) |

![behavior_modules](./image/behavior_modules.png)

Expand All @@ -41,33 +42,24 @@ WIP

The role of manager is to launch the appropriate scene module according to the situation. (e.g. if there is parked-vehicle in ego's driving lane, the manager launches the avoidance module.)

Now, it is able to select two managers with different architecture.

| Name | Description | Details |
| :------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------- |
| Behavior Tree based manager (default) | this manager launches scene modules based on Behavior Tree. all scene modules run exclusively. | LINK(WIP) |
| BT-free manager (unstable) | this manager is developed in order to achieve complex scenario, and launches scene modules without Behavior Tree. multiple modules can run simultaneously on this manager. | [LINK](./docs/behavior_path_planner_manager_design.md) |

The manager is switched by flag `COMPILE_WITH_OLD_ARCHITECTURE` in CmakeLists.txt of `behavior_path_planner` package. Please set the flag **FALSE** if you try to use BT-free manager.

```cmake
cmake_minimum_required(VERSION 3.14)
project(behavior_path_planner)
find_package(autoware_cmake REQUIRED)
autoware_package()
find_package(OpenCV REQUIRED)
find_package(magic_enum CONFIG REQUIRED)
set(COMPILE_WITH_OLD_ARCHITECTURE TRUE) # <- HERE
...
```

## Inputs / Outputs / API

### output
### Input

| Name | Required? | Type | Description |
| :---------------------------- | :-------: | :----------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ~/input/odometry || `nav_msgs::msg::Odometry` | for ego velocity. |
| ~/input/accel || `geometry_msgs::msg::AccelWithCovarianceStamped` | for ego acceleration. |
| ~/input/objects || `autoware_auto_perception_msgs::msg::PredictedObjects` | dynamic objects from perception module. |
| ~/input/occupancy_grid_map || `nav_msgs::msg::OccupancyGrid` | occupancy grid map from perception module. This is used for only Goal Planner module. |
| ~/input/traffic_signals || `autoware_perception_msgs::msg::TrafficSignalArray` | traffic signals information from the perception module |
| ~/input/vector_map || `autoware_auto_mapping_msgs::msg::HADMapBin` | vector map information. |
| ~/input/route || `autoware_auto_mapping_msgs::msg::LaneletRoute` | current route from start to goal. |
| ~/input/scenario || `tier4_planning_msgs::msg::Scenario` | Launches behavior path planner if current scenario == `Scenario:LaneDriving`. |
| ~/input/lateral_offset || `tier4_planning_msgs::msg::LateralOffset` | lateral offset to trigger side shift |
| ~/system/operation_mode/state || `autoware_adapi_v1_msgs::msg::OperationModeState` | Allows planning module to know if vehicle is in autonomous mode or can be controlled<sup>[ref](https://github.com/autowarefoundation/autoware.universe/blob/main/system/default_ad_api/document/operation-mode.md)</sup> |

### Output

| Name | Type | Description |
| :-------------------------- | :------------------------------------------------------- | :--------------------------------------------------------------------------------------------- |
Expand All @@ -78,30 +70,8 @@ set(COMPILE_WITH_OLD_ARCHITECTURE TRUE) # <- HERE
| ~/input/ready_module | `tier4_planning_msgs::msg::PathChangeModule` | (for remote control) modules that are ready to be executed. |
| ~/input/running_modules | `tier4_planning_msgs::msg::PathChangeModuleArray` | (for remote control) current running module. |

### input

| Name | Required? | Type | Description |
| :---------------------------- | --------- | :----------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ~/input/odometry || `nav_msgs::msg::Odometry` | for ego velocity. |
| ~/input/accel || `geometry_msgs::msg::AccelWithCovarianceStamped` | for ego acceleration. |
| ~/input/objects || `autoware_auto_perception_msgs::msg::PredictedObjects` | dynamic objects from perception module. |
| ~/input/occupancy_grid_map || `nav_msgs::msg::OccupancyGrid` | occupancy grid map from perception module. This is used for only Goal Planner module. |
| ~/input/traffic_signals || `autoware_perception_msgs::msg::TrafficSignalArray` | traffic signals information from the perception module |
| ~/input/vector_map || `autoware_auto_mapping_msgs::msg::HADMapBin` | vector map information. |
| ~/input/route || `autoware_auto_mapping_msgs::msg::LaneletRoute` | current route from start to goal. |
| ~/input/scenario || `tier4_planning_msgs::msg::Scenario` | |
| ~/input/lateral_offset || `tier4_planning_msgs::msg::LateralOffset` | lateral offset to trigger side shift |
| ~/system/operation_mode/state || `autoware_adapi_v1_msgs::msg::OperationModeState` | Allows planning module to know if vehicle is in autonomous mode or can be controlled<sup>[ref](https://github.com/autowarefoundation/autoware.universe/blob/main/system/default_ad_api/document/operation-mode.md)</sup> |

○ Mandatory △ Optional

#### Optional

The following inputs are not needed

| Name | Type | Description |
| :--------------------- | :---------------------------------------- | :----------------------------------- |
| ~/input/lateral_offset | `tier4_planning_msgs::msg::LateralOffset` | lateral offset to trigger side shift |
○ Mandatory: Planning Module would not work if anyone of this is not present.
△ Optional: Some module would not work, but Planning Module can still be operated.

## General features of behavior path planner

Expand Down Expand Up @@ -179,8 +149,6 @@ Click [here](./docs/behavior_path_planner_path_generation_design.md) for details

## References / External links

This module depends on the external [BehaviorTreeCpp](https://github.com/BehaviorTree/BehaviorTree.CPP) library.

<!-- cspell:ignore Vorobieva, Minoiu, Enache, Mammar, IFAC -->

[[1]](https://www.sciencedirect.com/science/article/pii/S1474667015347431) H. Vorobieva, S. Glaser, N. Minoiu-Enache, and S. Mammar, “Geometric path planning for automatic parallel parking in tiny spots”, IFAC Proceedings Volumes, vol. 45, no. 24, pp. 36–42, 2012.
Expand Down

0 comments on commit f0fa6c7

Please sign in to comment.