Quadcopter simulation environment for control strategies developing
- Bernardo Fichera ([email protected])
- Mattia Andolfatto ([email protected])
This library depends on eigen for the linear algebra. The latest git version is required.
git clone https://gitlab.com/libeigen/eigen.git ([email protected]:libeigen/eigen.git)
cd eigen && mkdir build && cmake .. && (sudo) make install
Other (optional) dependencies for improving performances required by Eigen are:
- Linear Algebra -> LAPACK, BLAS, MKL
- Multi-threading -> OPENMP, TBB
For dynamics integration the package uses integrator-lib.
git clone --recursive https://github.com/nash169/integrator-lib.git ([email protected]:nash169/integrator-lib.git)
cd /path/to/integrator-lib
waf (./waf) configure build install
Control is handle through control-lib.
git clone --recursive https://github.com/nash169/control-lib.git ([email protected]:nash169/control-lib.git)
cd /path/to/control-lib
waf (./waf) configure build install
If you want to build with the graphics magnum-dynamics is necessary.
git clone --recursive https://github.com/nash169/magnum-dynamics.git ([email protected]:nash169/magnum-dynamics.git)
cd /path/to/magnum-dynamics
waf (./waf) configure build install
For specific compiling configuration refer to the library documentation.
Clone the repository including the submodules
git clone --recursive https://github.com/nash169/quad-arena.git ([email protected]:nash169/quad-arena.git)
quad-arena relies on WAF compilation tool. Arch provides an updated version of WAF exec in the standard repo
sudo pacman -S waf
For other distros it is better to download the latest version from the official website and move the executable in the library repo
wget 'https://waf.io/waf-2.0.19'
mv waf-2.0.19waf-2.0.19 waf && mv waf /path/to/quad-arena
cd /path/to/kernel-lib
chmod +x waf
Compile and install using waf commands
waf (./waf) configure build
or
waf (./waf) configure && waf (./waf)
Install the library (optional)
(sudo) waf (./waf) install
If you want to make clean installation
(sudo) waf (./waf) distclean configure build install
It is highly recommended to compile with AVX support
waf (./waf) configure --optional-flags
Enable OPENMP multi-threading
waf (./waf) configure --multi-threading
Enable LAPACK
waf (./waf) configure --with-lapack
Enable BLAS
waf (./waf) configure --with-blas
Enable MKL
waf (./waf) configure --with-mkl
Set MKL multi-threading
waf (./waf) configure --mkl-threading=<sequential|openmp|tbb>
By default MKL uses sequential
option. If you activate openmp
this includes --multi-threading
that will be deactivated in this case. In addition if you choose OpenMP multi-threading it is possible select between the GNU (default), gnu
, or Intel, intel
, version through --mkl-openmp
option.
Suggested configuration
waf (./waf) configure --optional-flags --with-lapack --with-blas --with-mkl --mkl-threading=tbb
In order to set the desired compiler define the environment variable CXX=<g++,clang++,icpc> (gnu, clang and intel compiler respectively).
./build/src/examples/take_off_hovering