Skip to content

Commit 40d5171

Browse files
soblinmitsudome-r
andauthored
docs(autoware_lanelet2_extension): refactor document (#25)
* refactor doc Signed-off-by: Mamoru Sobue <mamoru.sobue@tier4.jp> * Update autoware_lanelet2_extension/docs/lanelet2_format_extension.md Co-authored-by: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com> --------- Signed-off-by: Mamoru Sobue <mamoru.sobue@tier4.jp> Co-authored-by: Ryohsuke Mitsudome <43976834+mitsudome-r@users.noreply.github.com>
1 parent 5e09dc7 commit 40d5171

File tree

2 files changed

+200
-189
lines changed

2 files changed

+200
-189
lines changed

autoware_lanelet2_extension/docs/extra_regulatory_elements.md

+159
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,22 @@
11
# Extra Regulatory Elements
22

3+
## Right Of Way
4+
5+
Users must add `right_of_way` tag to intersection lanes, namely lanes with `turn_direction` attribute. Below image illustrates how to set yield lanes(orange) for the ego lane(blue).
6+
7+
![RightOfWay tagging](right_of_way.drawio.svg)
8+
9+
Basically intersection lanes which are:
10+
11+
- left/right turn
12+
- straight and on the side of priority sign
13+
14+
need this tag to know which lanes in their `conflicting lanes` can be ignored for object detection.
15+
16+
left/right turning lane is often conflicting with lanes whose traffic lights are red when its traffic light is green, so **at least** those lanes should be registered as yield lanes.
17+
18+
If ego car is going straight the intersection when the traffic light is green, then it does not need to care other lanes because it has the highest priority. But if the traffic lights do not exist and ego lane is on the side of priority road, then yield lanes should be set to explicitly ignore part of conflicting lanes.
19+
320
## Detection Area
421

522
This regulatory element specifies region of interest which vehicle must pay attention whenever it is driving along the associated lanelet. When there are any obstacle in the detection area, vehicle must stop at specified stopline.
@@ -148,6 +165,148 @@ An example annotation of speed_bump:
148165
</way>
149166
```
150167

168+
## Crosswalk
169+
170+
Original Lanelet2 format only requires `subtype=crosswalk` tag to be specified in the corresponding lanelet. However, Autoware requires a regulatory element to be defined on top of that in order to:
171+
172+
- explicitly define the relevant driving lanes even in 3D environment
173+
- optionally define stop lines associated with the crosswalk
174+
- enable accurate definition of complex polygons for crosswalk
175+
176+
For the details, refer to this [GitHub discussion](https://github.com/orgs/autowarefoundation/discussions/3036).
177+
Crosswalk regulatory element can be tied to `ref_line`, `crosswalk_polygon` and `refers`.
178+
179+
![crosswalk_regulatory elements](crosswalk_regulatory_element.svg)
180+
181+
- `ref_line`: Stop line for the crosswalk.
182+
- `crosswalk_polygon`: Accurate area of the crosswalk.
183+
- `refers`: Lanelet that indicates the moving direction of crosswalk users.
184+
185+
_An example:_
186+
187+
```xml
188+
<relation id="10751">
189+
<member type="way" role="ref_line" ref="8123"/>
190+
<member type="way" role="crosswalk_polygon" ref="4047"/>
191+
<member type="relation" role="refers" ref="2206"/>
192+
<tag k="type" v="regulatory_element"/>
193+
<tag k="subtype" v="crosswalk"/>
194+
</relation>
195+
```
196+
197+
### Traffic Lights for Crosswalks
198+
199+
It can define not only traffic lights for vehicles but also for crosswalk users by using regulatory element. In this case, the crosswalk lanelet needs to refer the traffic light regulatory element.
200+
201+
![crosswalk_traffic_light](crosswalk_traffic_light.svg)
202+
203+
_An example:_
204+
205+
```xml
206+
<way id="179745">
207+
<nd ref="179743"/>
208+
<nd ref="179744"/>
209+
<tag k="type" v="traffic_light"/>
210+
<tag k="subtype" v="solid"/>
211+
<tag k="height" v="0.5"/>
212+
</way>
213+
214+
...
215+
216+
<relation id="179750">
217+
<member type="way" role="refers" ref="179745"/>
218+
<member type="way" role="refers" ref="179756"/>
219+
<tag k="type" v="regulatory_element"/>
220+
<tag k="subtype" v="traffic_light"/>
221+
</relation>
222+
223+
...
224+
225+
<relation id="1556">
226+
<member type="way" role="left" ref="1449"/>
227+
<member type="way" role="right" ref="1450"/>
228+
<member type="relation" role="regulatory_element" ref="179750"/>
229+
<tag k="type" v="lanelet"/>
230+
<tag k="subtype" v="crosswalk"/>
231+
<tag k="speed_limit" v="10"/>
232+
<tag k="location" v="urban"/>
233+
<tag k="one_way" v="no"/>
234+
<tag k="participant:pedestrian" v="yes"/>
235+
</relation>
236+
```
237+
238+
### Safety Slow Down for Crosswalks
239+
240+
If you wish ego vehicle to slow down to a certain speed from a certain distance while passing over a
241+
certain crosswalk _even though there are no target objects around it_, you can add following tags to
242+
the crosswalk definition on lanelet2 map:
243+
244+
- `safety_slow_down_speed` **[m/s]**: The speed you want ego vehicle to drive at while passing over
245+
the crosswalk
246+
- `safety_slow_down_distance` **[m]**: The distance between front bumper of ego vehicle and
247+
closest point to the crosswalk when ego vehicle slows down and drives at specified speed
248+
249+
_An example:_
250+
251+
```xml
252+
<relation id='34378' visible='true' version='1'>
253+
<member type='way' ref='34374' role='left' />
254+
<member type='way' ref='34377' role='right' />
255+
<tag k='subtype' v='crosswalk' />
256+
<tag k='safety_slow_down_speed' v='3.0' />
257+
<tag k='safety_slow_down_distance' v='2.0' />
258+
<tag k='type' v='lanelet' />
259+
</relation>
260+
```
261+
262+
## No Stopping Area
263+
264+
The area with `no_stopping_area` tag can be used to prohibit even a few seconds of stopping, even for traffic jams or at traffic lights.
265+
The ref_line can be set arbitrarily, and the ego-vehicle should stop at this line if it cannot pass through the area.
266+
267+
_An example:_
268+
269+
```xml
270+
<way id='9853' visible='true' version='1'>
271+
<nd ref='9849' />
272+
<nd ref='9850' />
273+
<nd ref='9851' />
274+
<nd ref='9852' />
275+
<tag k='area' v='yes' />
276+
<tag k='type' v='no_stopping_area' />
277+
</way>
278+
279+
<relation id='9854' visible='true' version='1'>
280+
<member type='way' ref='9853' role='refers' />
281+
<member type='way' ref='9848' role='ref_line' />
282+
<tag k='subtype' v='no_stopping_area' />
283+
<tag k='type' v='regulatory_element' />
284+
</relation>
285+
```
286+
287+
## No Parking Area
288+
289+
The area with `no_parking_area` tag can be used to prohibit parking. Stopping for a few seconds is allowed in this area.
290+
291+
_An example:_
292+
293+
```xml
294+
<way id='9853' visible='true' version='1'>
295+
<nd ref='9849' />
296+
<nd ref='9850' />
297+
<nd ref='9851' />
298+
<nd ref='9852' />
299+
<tag k='area' v='yes' />
300+
<tag k='type' v='no_parking_area' />
301+
</way>
302+
303+
<relation id='9854' visible='true' version='1'>
304+
<member type='way' ref='9853' role='refers' />
305+
<tag k='subtype' v='no_parking_area' />
306+
<tag k='type' v='regulatory_element' />
307+
</relation>
308+
```
309+
151310
## Bus Stop Area
152311

153312
The `BusStopArea` regulatory element can be used to specify the available space for bus-like vehicles to stop at a bus stop. The regulatory element should refer to a polygon with the `bus_stop_area` type and should be referred by the `road` or `road_shoulder` subtype lanelets that overlaps with the target `bus_stop_area` polygon.

0 commit comments

Comments
 (0)