Inspiration
Nonlinear model predicitive control is a powerful and robust control system. But it heavilty depends on the expertise of the control system engineer designing it. We wanted to automate this process and get a robust and reliable output.
What it does
We employ genetic algorithms, a class of evolutionary programs to tune the gains to an optimum. The Nonlinear Model predictive control used here is an example of using MPC as a trajectory tracker in the differential drive UGV.
How we built it
We used C++ compared to the defacto language python used is such cases. This was because our model was heavily performance critical and python turned out to be really slow and runtime latencies were really high CMake was used for maintaining and building this project. Docker for running the executables and handling all dependencies. We were working on a Matlab simulink model to prove that the weights we obtained were indeed promising. However the time was not sufficient enough.
Challenges we ran into
Getting the IPOPT solver to work properly Designing the dynamics of the plant model Implementing the Interactive Decision tree in the fitness function Optimal fitness function for the algorithm
Accomplishments that we're proud of
Getting it to work! Never thought it would converge!
What we learned
Researched a lot about Genetic Algorithms in general. Learnt about different control algorithms like PID, MPC etc. Got to know about different solvers available out there like IPOPT, Forces etc. (we used IPOPT)
What's next for Automated tuning of Nonlinear MPC using Genetic Algorithms
Make a matlab/simulink model and test the obtained weights to prove that what we converged upon is the best.
Built With
- c++17
- cmake
- docker
Log in or sign up for Devpost to join the conversation.