2
2
3
3
## Purpose
4
4
5
- ` surround_obstacle_checker ` is a module to prevent moving if any obstacles is near stopping ego vehicle.
6
- This module runs only when ego vehicle is stopping.
5
+ This module subscribes required data (ego-pose, obstacles, etc), and publishes zero velocity limit to keep stopping if any of stop conditions are satisfied.
7
6
8
7
## Inner-workings / Algorithms
9
8
10
9
### Flow chart
11
10
12
- ![ surround_obstacle_checker_flow] ( ./media/surround_obstacle_checker_flow.svg )
11
+ ``` plantuml
12
+ @startuml
13
13
14
- ![ check_distance] ( ./media/check_distance.drawio.svg )
14
+ title surround obstacle checker
15
+ start
16
+
17
+ if (Check state) then
18
+ :State::STOP;
19
+
20
+ if (Is stop required?) then (yes)
21
+ else (no)
22
+ :Clear velocity limit;
23
+ :Set state to State::PASS;
24
+ endif
25
+
26
+ else
27
+ :State::PASS;
28
+
29
+ if (Is stop required?) then (yes)
30
+ :Set velocity limit;
31
+ :Set state to State::STOP;
32
+ else (no)
33
+ endif
34
+
35
+ endif
36
+
37
+ :Publish stop reason;
38
+
39
+ stop
40
+ @enduml
41
+ ```
42
+
43
+ <div align =" center " >
44
+ <img src =" ./media/check_distance.drawio.svg " width =80% >
45
+ </div >
15
46
16
47
### Algorithms
17
48
@@ -49,7 +80,6 @@ As mentioned in stop condition section, it prevents chattering by changing thres
49
80
50
81
| Name | Type | Description |
51
82
| ---------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------ |
52
- | ` ~/input/trajectory ` | ` autoware_auto_planning_msgs::msg::Trajectory ` | Reference trajectory |
53
83
| ` /perception/obstacle_segmentation/pointcloud ` | ` sensor_msgs::msg::PointCloud2 ` | Pointcloud of obstacles which the ego-vehicle should stop or avoid |
54
84
| ` /perception/object_recognition/objects ` | ` autoware_auto_perception_msgs::msg::PredictedObjects ` | Dynamic objects |
55
85
| ` /localization/kinematic_state ` | ` nav_msgs::msg::Odometry ` | Current twist |
@@ -58,12 +88,13 @@ As mentioned in stop condition section, it prevents chattering by changing thres
58
88
59
89
### Output
60
90
61
- | Name | Type | Description |
62
- | -------------------------- | ------------------------------------------- | ------------------------ |
63
- | ` ~/output/trajectory ` | ` autoware_auto_planning_msgs/Trajectory ` | Modified trajectory |
64
- | ` ~/output/no_start_reason ` | ` diagnostic_msgs::msg::DiagnosticStatus ` | No start reason |
65
- | ` ~/output/stop_reasons ` | ` tier4_planning_msgs::msg::StopReasonArray ` | Stop reasons |
66
- | ` ~/debug/marker ` | ` visualization_msgs::msg::MarkerArray ` | Marker for visualization |
91
+ | Name | Type | Description |
92
+ | --------------------------------------- | ----------------------------------------------------- | ---------------------------- |
93
+ | ` ~/output/velocity_limit_clear_command ` | ` tier4_planning_msgs::msg::VelocityLimitClearCommand ` | Velocity limit clear command |
94
+ | ` ~/output/max_velocity ` | ` tier4_planning_msgs::msg::VelocityLimit ` | Velocity limit command |
95
+ | ` ~/output/no_start_reason ` | ` diagnostic_msgs::msg::DiagnosticStatus ` | No start reason |
96
+ | ` ~/output/stop_reasons ` | ` tier4_planning_msgs::msg::StopReasonArray ` | Stop reasons |
97
+ | ` ~/debug/marker ` | ` visualization_msgs::msg::MarkerArray ` | Marker for visualization |
67
98
68
99
## Parameters
69
100
@@ -75,6 +106,7 @@ As mentioned in stop condition section, it prevents chattering by changing thres
75
106
| ` surround_check_recover_distance ` | ` double ` | If no object exists in this distance, transit to "non-surrounding-obstacle" status [ m] | 0.8 |
76
107
| ` state_clear_time ` | ` double ` | Threshold to clear stop state [ s] | 2.0 |
77
108
| ` stop_state_ego_speed ` | ` double ` | Threshold to check ego vehicle stopped [ m/s] | 0.1 |
109
+ | ` stop_state_entry_duration_time ` | ` double ` | Threshold to check ego vehicle stopped [ s] | 0.1 |
78
110
79
111
## Assumptions / Known limits
80
112
0 commit comments