Created by [ Rowan Dempster], last modified by [ Ben Zhang] on Jan 18, 2020
The job of Path Planning is, as we understand it, "Given an accurate enough picture of the world around the vehicle, and an accurate description of the vehicle's current state, instruct the vehicle on how to move". This is a lot to cover, and we have a large team, so we decided to split our team into subteams that handle different parts of our architecture.
General:
Onboarding:
Tutorials:
Architecture doc as of Nov 14, 2019: https://docs.google.com/document/d/11dzfnXUmhjTbYjIIyPo1pTQVJHtsKcRjvhW9IXq2DIA/edit
MPC Meeting - November 6th
[{.confluence-embedded-image
height=”400”}]{.confluence-embedded-file-wrapper
.confluence-embedded-manual-size}
The behavioural planner's job is to interpret and process semantic information about the car's state and the environment. This includes sending instructions about car speed, state (stopped, driving etc), and producing a list of lanes that the car can follow.
[{.confluence-embedded-image
.confluence-thumbnail height=”250”}]{.confluence-embedded-file-wrapper
.confluence-embedded-manual-size}
Inputs:
Process:
Outputs:
More on the Behavioral document
Decide on a Path that describes how the vehicle will move through its immediate environment towards a local Goal Pose.
[{.confluence-embedded-image
height=”250”}]{.confluence-embedded-file-wrapper
.confluence-embedded-manual-size}
**Path
**A Path is an ordered collection of Vehicle States. Each Vehicle State
is a pose, and has a target velocity, and maybe even a target
acceleration!
**Immediate Environment?
**The immediate environment of the vehicle is defined by the costmap
provided by the Costmap subteam.
Inputs:
Process:
Outputs:
More on the Trajectory Planning document
Potential fields are a representation of the car's environment as a series of continuous sigmoidal functions
[{.confluence-embedded-image
.confluence-external-resource
height=”250”}]{.confluence-embedded-file-wrapper
.confluence-embedded-manual-size}
Inputs:
Process:
Reference Paper: https://www.mdpi.com/2076-3417/8/12/2592/htm
[Paper on Integration with
MPC: ]A_Potential_Field-Based_Model_Predictive_Path-Planning_Controller_for_Autonomous_Road_Vehicles.pdf
[[[]{.companion-edit-button-placeholder
.edit-button-overlay data-linked-resource-container-id=”1442247”
data-linked-resource-id=”1442612” data-template-name=”companionEditIcon”
data-source-location=”embedded-attachment”}]
(Yeah, that's autonomous btw)
MPC is our Year 3 Feedback Controler in charge of handling smooth steering, acceleration, and braking. While Trajectory creates an "ideal path" for the car to follow, MPC makes sure the car follows that path.
MPC uses Potential Fields to implement obstacle avoidance.
Inputs:
Process:
Fun Fact: Our Technical Lead for MPC, Mohamed Daoud{.confluence-userlink .user-mention}, has a paper on MPC published in IEEE Explore!
[{.confluence-embedded-image
height=”153”}]{.confluence-embedded-file-wrapper
.confluence-embedded-manual-size}
\
[[[]{.companion-edit-button-placeholder
.edit-button-overlay data-linked-resource-container-id=”1442247”
data-linked-resource-id=”1442605” data-template-name=”companionEditIcon”
data-source-location=”embedded-attachment”}]
(Yeah, that's autonomous btw)
Mission Statement
Create and manage a special type of object within the cost map: Occupiable Objects.
An occupiable object any complex object where the physical region that the object occupies does not completely define its effect on the course of the vehicle. Some examples:
Occupiable Objects are used by Behavioural Planner to determine where / when to stop. Each occupiable object in the environment has it's own state machine. For example, a pedestrian has its own state machine containing information about whether or not the pedestrian has crossed the road. A stop sign has a state machine determining if the car has stopped at the stop sign yet. Based on the internal state, an Occupiable Object will produce a "Stop Line", a line that the car should stop at if the car's path crosses that line.
Input:
Output:
More on the Occupiable Objects Documentation
Mission Statement
The Costmap module creates a cost based occupancy grid which encapsulates all static objects in the vehicle's immediate environment.
Objects?
What we mean by objects is everything from road lines to huge boulders in the middle of the road. In other words, objects are not just obstacles that block our path, but rather anything that impacts the course of the vehicle. All of these objects are sent to Path Planning from Processing using the Environment.msg.
Static?
What it means for an object to be static is that the obstacle does not have impact (for path planning purposes) any other part of the environment besides the physical space that it occupies. This is best understood by example:
The Output!
The output of the Costmap module is a matrix where each cell represents
the cost (ie penalty) of the vehicle being inside that cell.
The trajectory planner uses this matrix to navigate its way through the
environment is the "best" (defined by least cost) way possible to its
next goal state.
The Cost Map should always be up to date and an accurate reflections of
the vehicle's local environment.
More...
See more details in the Costmap subdocument: https://phabricator.watonomous.ca/w/software/path_planning/costmap/
\
\
\
A_Potential_Field-Based_Model_Predictive_Path-Planning_Controller_for_Autonomous_Road_Vehicles.pdf
(application/pdf)
image2020-1-7_22-29-26.png
(image/png)
image2020-1-7_22-31-38.png
(image/png)
image2020-1-7_22-32-48.png
(image/png)
stopping-at-stopsign_compressed.mp4
(video/mp4)
VID_20191129_161931.mp4
(video/mp4)
image2020-1-7_22-50-30.png
(image/png)
image.png (image/png)\
Document generated by Confluence on Dec 10, 2021 04:01