This repository contains code, libraries and other tools built for the Kugle robot project as part of the master thesis work described in Kugle - Modelling and Control of a Ball-balancing Robot, that does not fit in the other repositories, eg. log-processing, periphiral drivers/interfaces, startup scripts etc.
Most importantly this repository includes the real-time test code for the MPC library including obstacle avoidance in MPC_Test
.
mkdir build
cd build
cmake ..
make
To build and run the mpc_code_generation
executable ACADO is needed. If not already installed, ACADO Toolkit will automatically be downloaded and compiled by running cmake
, however ACADO will only be stored in /tmp
why it will be removed if the PC is restarted.
Alternatively it is recommended to download, compile and install ACADO manually into your home folder:
cd ~
git clone https://github.com/acado/acado.git -b stable ACADOtoolkit
cd ~/ACADOtoolkit
git checkout b4e28f3131f79cadfd1a001e9fff061f361d3a0f
mkdir build
cmake -DCMAKE_BUILD_TYPE="Release" ..
echo 'source acado_env.sh' >> ~/.bashrc
source acado_env.sh
Note that a more recent branch from November 2018 has been chosen and used for all tests. The stable
branch is not compatible with the MATLAB interface due to a change in the MEX Code generation script related to the info
return struct.
This repository includes tests for the shape-accelerated model predictive controller including obstacle avoidance. The MPC can be simulated (faster than real-time) with a predefined trajectory and visualized with a 2D top-down view. Random obstacles will be generated during simulation. Run the simulation from the build
folder after compiling.
./MPC_Test
A video of the C++ MPC simulation is shown in the video here: https://www.youtube.com/watch?v=BJ4jbo7n7VY