This repo contains uncertain discrete time linear models and examples of applying time-varying tube-based model predictive control (MPC). Global RRT/RRT* planner included for tube-to-tube steering with obstacles.
Dependenices:
startup
test(true)
- Edit initial state and elasticity weighting in example file
- Set
useDataFile
to false to recompute tube approximation parameters if you want to see all the action
run_planar_double_integrator
- Edit maximum iterations, initial/final nominal states, and ETOC solver tube length(s) in example file
- Create additional obstacles using polytopes in
build_map.m
run_rrt_example
Fields | Description | Size | Type |
---|---|---|---|
z |
Nominal state trajectory | (nx,N) | float |
v |
Nominal control input sequence | (nu,N) | float |
a |
Cross section elasticitiy parameter sequence | (qs,N) | float |
N |
Number of time steps | scalar | int |
cost |
Total cost for tube solution | scalar | float |
success |
Valid solution success flag | scalar | bool |
Fields | Description | Size | Type |
---|---|---|---|
A |
Linear discrete time system state matrix | (nx,nx) | float |
B |
Linear discrete time system control matrix | (nx,nu) | float |
x0 |
Initial state | (nx,1) | float |
x_min |
State lower bound | (nx,1) | float |
x_max |
State upper bound | (nx,1) | float |
u_min |
Control lower bound | (nu,1) | float |
u_max |
Control upper bound | (nu,1) | float |
w_min |
Disturbance lower bound | (nw,1) | float |
w_max |
Disturbance upper bound | (nw,1) | float |
name |
System name (for plotting) | 1 | str |
nx |
Number of states | 1 | float |
nu |
Number of controls | 1 | float |
nw |
Number of disturbances | 1 | float |
- Speed up preprocessing
- Add support for homothetic and fixed size tubes
- Add different boundary condition options
- Set-based initial and final conditions
- Support mixed set and state boundary conditions
- Verify objective function for non-zero goal state
- Update stale models
-
double_integrator_model.m
-
spring_mass_damper_model.m
-
- Add full state vs. time plotting to all postprocessing scripts
- Decide on node and edge data for tube-to-tube RRT* tree
- Add RRT planner
- Add tube-to-tube ETOC steering to RRT planner
- Add tube obstacle collision check
- Decide on constant or decreasing prediction horizon
- Decide on rewiring strategy for RRT* planner
- Full example using basic map and
planar_double_integrator_model.m
- RRT* planner (DOING)
- Add vehicle model
- Add additional map options to
build_map.m
- Map saving
- Non-convex obstacles
- Additional example with more complex obstacle environment
@INPROCEEDINGS{7525471,
author={Raković, Sas̆a V. and Levine, William S. and Açikmese, Behçet},
booktitle={2016 American Control Conference (ACC)},
title={Elastic tube model predictive control},
year={2016},
volume={},
number={},
pages={3594-3599},
doi={10.1109/ACC.2016.7525471}}
@INPROCEEDINGS{6561023,
author={Raković, Saša V. and Cheng, Qifeng},
booktitle={2013 25th Chinese Control and Decision Conference (CCDC)},
title={Homothetic tube MPC for constrained linear difference inclusions},
year={2013},
volume={},
number={},
pages={754-761},
doi={10.1109/CCDC.2013.6561023}}