- Call fmincon with cost function and constraints in `compute_inputs`
- Add function `get_ref_decision_variable` to construct the full
decision variable for reference trajectory from reference
states and inputs
- Add quadratic cost function using state costs (Q)
and input costs (R)
- Use `npredstates` and `npredinputs` instead of `npred`
when looping through states and inputs
- Update `get_state_start_idx` and `get_input_start_idx`
descriptions to include assumption of `i` starting at 0
- Add `nonlcon` function that checks if position is on track
and not on or inside an obstacle
- Add `options` for `fmincon` to not specify constraint gradient,
but specify objective gradient
- Add parameter for number of track boundary points to use
around the closest point to current position when checking
if point is inside track polygon
- Add properties for prediction horizon of states & inputs
- Add properties for obstacles, current state, reference index,
and termination flag
- Update constructor to take in and set new properties
- Move properties with calculated values to constructor
- Remove function inputs for new properties
- Rename `curr_state` to `Y_curr` in `MPC_Class.m`
- Use object properties instead of function arguments (e.g., obj.ref_idx)
- Add boundary constraints for staying on the "map"
and staying within operating limits of vehicle inputs
- Add helper functions to get indices of things
- Update part2 deliverable function to use `MPC_Class`
- Clean-up some comments in `MPC_Class`
- Add MPC tunable parameters to `MPC_Class`
- Add TODO comments
- Add max/min position limits
- Delete `eq_cons` function for now
- Update `bound_cons` to enforce limit and
max/min position limits
- Rename `nonlincon` to `road_obstacle_cons`
- Parameterize index search around closest
road boundary point in `road_obstacle_cons`
- Use `inpolygon` to check if position is within road
and not in or on an obstacle
- Add helper function `get_start_idx` to get
starting index of Z(i) [states(i), inputs(i)]
in Z vector (combined states & inputs for prediction
horizon)
- Add generated states from part 1 as variable
`ROB535_ControlProject_part1_state` to
`ROB535_ControlProject_part1_Team3.mat`
- Make step size and prediction horizon global variables
- Remove references to unused global variables
- Fix reference trajectory indexing with "i" based
on `ROB535_ControlProject_part1_state` variable
- Replace `dt` with `T_s` in `linearized_bike_model`
- Delete nonlinear optimization functions
- Move intermediate kinematic model computations to
`bike_model_helper` function
- Compute discrete-time linearized model in `linearized_bike_model`
function
- Copy `xenia_nonlinearopt.m` to `xenia_sravan_nonlinearopt.m`
- Clean up nonlinear bike model: add comments, whitespace,
intermediate variables, etc.
- Add helper function `clamp` to clamp a value between min
and max limits
- Deliverables folder holds final files for submission
- Experimentation holds scripts and things related to our development of
a final solution
- Simulation holds the provided files
- Added template for part 2 submission with comments
- Rename `sravan_part_1.m` to `part1_generate_trajectory.m`
- Save inputs to variable called `ROB535_ControlProject_part1_input`
- Save variable to `ROB535_ControlProject_part1_Team3.mat`
- Move provided files out of "SimPkg_F21(student_ver)" folder
- Add `sravan_part_1.m` that generates segments of trajectory
- Currently at 57.34% track completion