Alvin’s Status Report for 4/20

Personal tasks of this week:

Task: Verifying the SLP solver

Definition: Although the SLP solver seems to be running correctly based on its simulation gif, we still need to verify its correctness by comparing it against other solvers. In addition, it needs to be tested against noise.

Completion: I compared results of the SLP solver with an IPOPT solver, and both gave the same results, verifying that the SLP solver is correct. I also tested the solver with an added gaussian noise to theta, and it was still able to solve the problem, indicating that it is robust to some noise.

 

The above gif shows the system with added noise.

 

Task: Setting up the Raspi-PCB interface

Definition: To communicate between the raspi and the PCB, an interface is needed. Namely, the raspi needs to be able to configure the PCB by controlling switches and digipots on the board, as well as give an input voltage and read an output voltage. Performing these operations will require establishing communication protocols using I2C, SPI, and GPIO.

Completion: I was able to find a library that contained drivers for I2C, SPI, and GPIO communication for the raspi. I successfully created an interface for writing from the raspi using SPI.

 

New Tools/Knowledge Learned:

Throughout this project, I learned a lot about the mathematical theory behind model predictive control, sequential quadratic programming, and sequential linear programming. This was done though searching for articles/papers online, and through discussions with Thomas. I also learned a lot about the Casadi library, and how to use it to formulate mathematical problems and real world simulations.

 

Next Steps:

Create the remaining interface, including reading using SPI, read/write using I2C and GPIO.

 

Overall progress assessment:

The remaining work is on finishing the interface and testing the whole system once the PCB arrives. Slightly behind schedule as the PCB has not yet been shipped.