Dynamically Expanding the Drivable Area #2851
Replies: 5 comments 6 replies
-
The dynamic drivable area expansion seems more easier to implement, and I would suggest to append the whole side lane instead of length-based. It will make the code more easier to implement and less complexity(?). |
Beta Was this translation helpful? Give feedback.
-
I believe that we should expand the drivable area at the initialization phase of Autoware. It should be mostly expanded on the curves of lanelet and it should depend on the shape of lanelet and the parameters of the selected Ego vehicle stored in vehicle_info_param.yaml: ros__parameters: Based on these parameters we should be able to calculate the lateral length of vehicle footprint in each place of the lanelet. If my idea is not clear I can prepare some drawings. I'm not sure if it's already considered somewhere in the planner, but definitely should be also considered in the drivable area, especially for the long vehicles (like bus) |
Beta Was this translation helpful? Give feedback.
-
Out of curiosity, how does this work? Are the dynamic obstacles detected via lidar, but ignored if their position is determined to be outside of the current lane? |
Beta Was this translation helpful? Give feedback.
-
@maxime-clem |
Beta Was this translation helpful? Give feedback.
-
@maxime-clem @WJaworskiRobotec As @WJaworskiRobotec said, the dynamic DA Expansion can be determined statically from lane structure and vehicle geometry. (Although the DA generation itself is dynamic, so it will be dynamic anyway.) My specific suggestions are:
This operation can be implemented in the The minor problem is that at the time the DA is generated, the path vehicle follows has not been determined. So, strictly speaking, extending the DA based on an accurate decision is impossible. However, this is a minor issue that can be put off this time. |
Beta Was this translation helpful? Give feedback.
-
This discussion is to share ideas for dynamically expanding the drivable area when necessary.
Background
The
Path
message published by thebehavior_path_planner
contains the drivable area, i.e., a region that the ego footprint must not exit.The drivable area is represented by a
nav_msgs/OccupancyGrid
. Currently, cells of the occupancy grid can take 2 values: drivable and not drivable.This drivable area usually corresponds to the lanelets of the route followed by ego. Only in some situations (e.g., lane changes) does the drivable area extend into other lanes.
Planners like the
obstacle_avoidance_planner
must then guarantee that the vehicle footprint along the planned trajectory does not overlaps with any "not drivable" cells.Motivating use case and issues
A recent issue motivated this discussion: autowarefoundation/autoware.universe#1759
When a road or curve is too narrow or the vehicle too big, the drivable area can be "impossible" to drive. Current planners will make the vehicle stop before the narrow passage and ego cannot progress further along its route.
Temporary solution
The
behavior_path_planner
has parameters which enable expanding the drivable area with fixed left and right extra length.A sharp right turn can thus be made drivable by extending the area to left.
Issues
There are 2 issues with the temporary solution stated above:
Possible solutions
I write here some ideas for being able to expand the drivable area only when necessary.
These ideas do not tackle the issue with dynamic obstacles which must be resolved differently.
Dynamic drivable area expansion
A function can be added to dynamically change the parameters to expand the drivable area.
This function could be part of the
behavior_path_planner
or could be a new node.The new function would detect when the trajectory stops because of an impossible drivable area.
In such situation, the new function would start increasing the left or right extra length until the trajectory no longer stops.
Pros: not too heavy to implement.
Cons: reactive approach.
Proposal 1 (11/15): AWF-202211-DynamicDrivableArea.pdf
Soft drivable area
The format of the drivable area can be changed to include more than the 2 current values "drivable" and "not drivable". For example, a value "undesired" can be added such that:
Pros: more expressive, allows for smarter planning.
Cons: requires heavy changes.
Beta Was this translation helpful? Give feedback.
All reactions