Actual MPC for us will be in C++ ROS node for high-level planning .. low level controllers for motors ..etc are out of scope
NN used for system identification
TODO: Run simulation and inform Jacob when ready
Feb, 14
ROS installation in VMware is too slow, build another VM with GPU HW acceleration.
Gazebo crashes in VMware with GPU HW acceleration!
TODO: check how to run GUI applications, Gazebo and RQT seem to be required
container is faster but several configuration issues to get GPU accelration for MMPI controller
TODO: try VM on more powerful computer
Feb, 15
Team event: bi-weekly team meeting
Current LTVMPC implementation drives fine on Marietta track, but slow on CCRF track.
I will be working on tuning MPC controller in order to drive faster on CCRF track.
Notes
TODO: Find out if I can run simulation locally?
TODO: What’s the difference bet. Marietta and CCRF tracks?
TODO: Prepare status slides for meetings in the future.
Feb, 16
Todo: how to formulate faster progress on the track? traj. tracking?
Self-study material references:
Christ et al., 2019 Time-optimal trajectory planning for a race car considering variable tyre-road frictioncoefficients, Vehicle System Dynamics
CHEN et al., 2020 MPC-based path tracking with PID speed control for high-speed autonomous vehicles considering time-optimal travel
Kapania et al., 2016 A Sequential Two-Step Algorithm for Fast Generation of Vehicle Racing Trajectories
Verschueren, 2015 Towards time-optimal race car driving using nonlinear MPC in real-time
Velenis, E., and Tsiotras, P., 2008 Minimum-timetravel for a vehicle with acceleration limits: Theoretical analysis and receding-horizon implementation
TODO: review papers and send them to Jacob for discussion
Feb, 19
New info from Jacob:
For what we are doing, you don’t need to run Gazebo or MPPI
Code not available in public repo (Not the MPPI Controller)
New code repos provided as archives (snapshot from working stuff on Jacob’s side)
TODO: build Autorally-private in same catkin workspace with Autorally repo
Feb 20
Building private code fails
Error CMAKE_CUDA_DEVICE_LINK_EXECUTABLE –> What do we need GPU for?
TODO:
Check with Jacob reg. dependencies, compiler version ..etc
Feb, 23
Managed to run the code from Jacob, LTVMPC results look really sad
Feb, 26
Subteam event: meeting with Jacob
Notes:
No need to push to repo for now (strange!)
Target speed 5m/s doesn’t work. Set target speed 2.5m/s
TODO: Join slack channel
TODO: Provide several runs with target speed 2.5m/s to Jacob
Not sure why trajectory isn’t optimal even if target speed is low and weight of error in y = 0? TODO: Investigate
Discussed proposals for progress toward time-optimal:
Tracking a certain target speed isn’t important - Agreed
Tracking distance from center lane isn’t important - Agreed
Change model into time-independent model (like Verschueren, 2015 ) - Jacob not sure it’s a good idea, seems too much work and we linearize anyway
I proposed trying to add change parameters/cost function to memics the same effect (emphasis on distance traveled)
Results are much better with speed set point 2.5m/s
Mar, 1
Team event: bi-weekly team meeting
TODO: maintain environment/dependencies installation steps in prep_env.sh
Feedback from J. Knaup, performance baseline with 5m/s is better than my screenshots, controller might be running slow (simulation and code run in realtime not sim time)
Mar, 2
TODO: Deep dive into the implementation
Seems we’re using CVXGEN, apply for educational license
Mar, 4
Changing problem formulation in CVXGEN to maximize travel on the track, still unstable results despite contraint on lateral position to be within track width.
Seems the scope of work will go beyond parameter tuning
TODO: review MPC and Optimization material
TODO: modify speed based on curvature? (increase in straight sections, decrease in acute curved sections)
TODO: check where targets are coming from to the solver?
Mar, 12
Notes on expirement with agressive target S
Adding target on state variable (s) improves results are getting better (faster), but still unstable
Target is calculated with curvature speed modifier (TODO: not sure this is a good idea, can be confusing to the solver?)
Increasing the weight of target S improves speed as expected (since S is calculated with more agressive speed in straight sections?)
TODO: review with Jacob what might be the reason
TODO: expirement with extreme cases (target speed very low/high, on straight/acute section ..etc) in order to identify root cause
TODO: include results and explaination in slides for Monday meeting.
Simulation Result with cost function weight 5.0 on Vx only:
Simulation Result with cost function weight 5.0 on Vx and 1.0 weight on S
Simulation Result with cost function weight 3.0 on Vx and 1.0 weight on S
Mar, 13
TODO: expirement with multishot rather than single-shot
Mar, 15
Team event: bi-weekly team meeting
presented LTVMPC_CW.pptx, no major comments
TODO: Prof. asked for better visualization (track top-view)
Mar, 16
Notes from expirements:
Adding target on difference of initial and terminal state variable (s) might be better than a single target for the whole horizon, TODO try it?
Setting terminal cost to zero improves the unstable/strange results
For some problems, stability guarantees can be obtained by adding specific terminal costs and constraints. Terminal costs and constraints also allow simpler, shorterhorizon controllers to approximate the behavior of controllers with longer horizons.
TODO: discuss how important is it with Jacob.
Mar, 17
Subteam event: meeting with Jacob
TODO: push changes to autorally private repo, Nolan shall provide access
Mar, 20
Updated CVXGEN to multishot and cost term for dS = quad((Sterminal_target - Sinitial_target) - (Sterminal - Sinitial))
Notes from simulation expirements with multi-shot
Speed isn’t greatly improved compared to baseline but faster than target S and better handling and stays in track than both
Simulation with with multi-shot + dS term doesn’t yield faster result, TODO: additional tuning needed?
TODO: make all options (weights for State variables, Terminal stats, dS ..etc) available as configuration parameters for better expirementation
Simulation Result multishot:
Simulation Result multishot + dS term:
Mar, 29
Team event: bi-weekly team meeting
presented LTVMPC_CW2.pptx, no major comments
J. Knaup commented: too wiggly, TODO: meet to discuss what’s causing that
TODO: provide the modifications directly, for some reason it’s not possible to get write access
Apr, 1
Provided snapshot of code, simulation data: param configuration and results