Created by [ Rowan Dempster], last modified by [ Spencer Zhou] on Jan 31, 2020
Spencer Zhou{.confluence-userlink .user-mention} and Charles Zhang{.confluence-userlink .user-mention}
BP should publish a lateral command (keep the current lane / lane changing)
Overview
Behavioural planner is the "brain" of the car. It is in charge of
keeping track of the car's state by planning goal lines, changing the
car's speed, stopping the car, and changing lanes. Behavioural planner
is distinct from Occupiable Objects as Occupiable Objects keeps track of
the state of individual objects, while Behavioural planner uses the
information from Occupiable Objects to plan the car's state and path.
Behavioural is distinct from Trajectory/Feedback as Behavioural decides
"where" to go locally, but Trajectory/feedback control how to get
there.
F19 Requirements:
W20 Requirements:
Overall, the pipeline will look like this:
\
[{.confluence-embedded-image
.confluence-external-resource}]
Using the cutting lines (lines where the car should stop) passed from Occupiable, the car will decide where it wants to stop and set the goal appropriately. This will be based on proximity. Maybe we might need some sort of priority system where pedestrians are more important to stop for. probably not needed though. If the cutting layer is empty, the car will use a lookahead to determine where to set the goal line.
Notes:
[{.confluence-embedded-image
.confluence-external-resource}]
\
The car will start in "waiting for [START]" before proceeding. We need substates for 'waiting for' because if our lane is blocked by construction, we need to know that and to switch lanes.
the "Turning" state is for intersections. ie: turn left, turn right.
Big question for Fall is lane changing and intersections.
Processing will be passing Path Planning lanes and centre trajectories from an HD map.
[{.confluence-embedded-image
.confluence-external-resource}]
\
The lanes and trajectories will be numbered in some order from negative (left road boundary) to zero (centre yellow line of the road) to positive (right road boundary). Exact details on labeling scheme are to be ironed out in [dev cycle 3.]{.inline-comment-marker data-ref=”0dcd6128-94ad-4f9f-9d9f-9a7a4e43be10”} Numbered lanes allow us to keep track of what lane we are in and how many possible total lanes there are. This way we can easily change lanes.
Lane trajectories allow us to bypass Trajectory planning by following a pre-defined lane centre. Trajectory/Feedback will still be used to avoid obstacles, but Behavioural planner will provide what desired trajectory to follow. having lane center lines also makes Lane switching significantly easier. We can tell the car to follow the trajectory from a different lane and the MPC should transfer the car to that lane fluidly.
Processing will pass us intersection lane lines and trajectories for every possible action (left, right, straight). The only lines passed to us will be valid paths that our car can follow. IE: only paths and lanes stemming from our current intersection entrance. This is not currently finished (DEV CYCLE 2), but is one of Processing's next goals. Based on the Waypoints given by global mapping, behavioural can decide which trajectory to follow. Occupiable will tell behavioural where and how long to stop for.
Because we have lane centre lines, global mapping is simplified to a list of waypoints at intersections giving the desired turn. No additional information is required. One issue we will need to solve for Y3 is dynamic re-routing. How do we tell Global Mapping that our current path is blocked and where it is blocked?
Pedestrian
Lane Change
Document generated by Confluence on Dec 10, 2021 04:01