- Set gradient options to true for `fmincon` optimizer
- Play with optimizer limits a bit
- Add gradient computation for cost function
- Add gradient computation for track & obstacle constraints
- Compute gradients offline in `miscellaneous_stuff.m`
- Update `point_to_line` to output signed distance
- Adjust input error cost for steering angle
- Increase `fmincon` maximum function evaluations
- Add buffer factors for track boundary distance
and obstacle radius
- Add intermediate variables for calculating the
number of constraints
- Change discrete `inpolygon` constraints to continuous
function based constraints where obstacles are modeled
as circles and distance/direction from track boundary
is computed
- Add `point_to_line` function for computing track boundary
quantities
- Drastically increase nonlinear constraint violation cost (I think)
- Make state & input costs much smaller than constraint costs
- Add condition to stop simulation if nonlinear constraint
is not satisfied (doesn't seem to work for going off track)
- Create separate nonlinear constraints for each state to check
if it is on track and if it doesn't intersect each obstacle
- Change indexing of nonlinear constraints
- Decrease `sim_stop_idx` to 1500
- Add some debugging messages for when simulation hits
limit or when `fmincon` can't satisfy constraints
- Add more `fmincon` outputs for future debugging
- Add obstacle information to `getTrajectoryInfo` call
in `part2_test_controller.m` to see when car crashes
- Add parameter to stop simulation when specified
index in reference trajectory is reached
- Modify `forwardIntegrate` to return `Xobs` for plotting
- Plot obstacles in part2 testing figure
- Change some line plotting styles for clarity
- Add 1/2 coefficient to cost function
- Move `MPC_Class.m` to "Deliverables" folder
- Modify `part2_test_controller.m` plotting style a bit
- Rename `part2_MPC_controller.m` to `sravan_MPC_controller.m`
- Fix missing references to `obj`
- Fix `npredinputs` so it matches `npredstates` as specified by
`forwardIntegrate.m`
- Fix typo: `get_start_idx` -> `obj.get_state_start_idx`
- Fix nonlinear constraint indexing issue
- Fix nonlinear constraint obstacle indexing typo
- Remove unused `nonlinear_bike_model` function
- Compute continuous system matrices offline and convert
to function with `matlabFunction`: `A_c_func` & `B_c_func`
- Add `miscellaneous_stuff.m` which has some random testing
and continuous system matrix generation code
- Add `part2_test_controller.m` for testing part2 deliverable
- 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