-
Notifications
You must be signed in to change notification settings - Fork 0
delassus/Model-Predictive-Control
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
MODEL PREDICTIVE CONTROL
Model parameters:
Car State
x: current x location
y: current y location
psi: current angle
v: current speed
cte: current cross track error
epsi: current psi error
Actuators
steer_angle: range of -1, 1
acceleration: range of -0.5, 0.5
N: integer time steps horizon for the trajectory prediction model
dt: time step duration in milliseconds
Comments on the implementation
It took me a while to understand that the actuator for the steering wheel is inversed: a minus sign is required.
To successfuly implement this model there are 12 key points to understand:
//KEY POINT #1 transform waypoints to car coordinate before computing the polynomial
// (1) start by translating
// (2) use -psi for the angle
KEY POINT #2 Mitigate the latency with a speed bias parameter
KEY POINT #3 evaluate the polynomial at x=0, y=0 since we are in car coordinates
KEY POINT #4 since we use a polynomial of order 3 compute its derivative in main()
KEY POINT #5 steer value is negatively signed
KEY POINT #6 Adjust N and dt for a fast smooth ride
KEY POINT #7 Adjust the speed parameter v
KEY POINT #8 Adjust the cost of steering too much allows better speed
KEY POINT #9 Adjust the cost of steering unenvely allows smoother ride
KEY POINT #10 use a polynomial of order 3 and compute its derivative also in fg
KEY POINT #11 initialize the state
KEY POINT #12 At the end of solve() function, return the solution in the right order consistent with what main() expects
Reducing the prediction horizon allows higher speed
Increasing the cost penalty of steering too often allows increasing speed
Latency adjustment allows increasing sppeds
Waypoints are converted to car coordinates before computing the polynomial 3rd order polynomial.
If even faster speed is necessary: tighten the cost of moving the steering wheel and adjust N and dt.
At this time the speed is set to 70 mph, the ride is smooth but the car drives the curves as if during a Grand Prix.
About
This code implements a Model Predictive Control algorithm to drive an autonomous vehicle.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published