Authors: Tao Du, Adriana Schulz, Bo Zhu
Affiliation: MIT CSAIL
This project develops a design, simulation and optimization tool for casual users to build their own multicopters. It was a research project led by the Computational Fabrication Group at MIT CSAIL in 2015.
Please refer to docs/user_guide.pdf for more information.
- Windows: tested on Windows 10 64bit and Microsoft Visual Studio 2017.
- Linux: tested on Ubuntu 16.04 LTS and gcc 4.9.0.
- macOS: tested on Sierra 10.12.3 and AppleClang 8.1.0.
All of them are by default not included in the distribution. You need to use git submodule and the provided script to download and configure them.
- graphics_codebase: my own graphics viewer (git submodule + script).
- nlopt: an open-source C++ optimization library (git submodule).
- tinyxml2: an XML parser (git submodule).
Use git to clone the project from github. Note that --recursive is necessary
or you will have to pull the submodule manually:
git clone --recursive https://www.github.com/mit-gfx/multicopter_design.gitRun the script corresponding to your system to download dependencies. For Windows:
./windows_setup.ps1For linux:
./linux_setup.shFor macOS:
./macos_setup.shBelow we will use MULTICOPTER_DESIGN_PROJECT to refer to the location of this
project. The structure of the folder after you clone or download the project
should look like:
MULTICOPTER_DESIGN_PROJECTdocs/: a user guide.externals/: external libraries (see above).projects/: main source code.copter_simulation/: the core library.copter_viewer/: a viewer depending on copter_simulation.
resources/:copter/: XML files that define a copter. You are free to add your own XML files here.mesh/: 3D meshes we use to assemble our real copter. Files like connector.obj are 3D printable. In generally you should not touch any file here.measurement/: our propeller/motor/battery measurement data for your reference if you plan to do your own measurement.
.gitignore.gitmodulesCMakeLists.txtlinux_setup.shmacos_setup.shreadme.txt: this file.windows_setup.ps1
Depending on our operation system, follow the corresponding instructions:
- Open cmake-gui. Put your own
MULTICOPTER_DESIGN_PROJECTin "Where is the source code", and put your desired build folder in "Where to build the binaries". The build folder can be any folder you like, but we recommend using an empty folder outsideMULTICOPTER_DESIGN_PROJECT. - Click "Configure", then selected "Visual Studio 15 2017 Win64" and click
"Finish". Once it is done, click "Generate". Now navigate to your build folder,
open the solution "multicopter_design.sln", and press
F7to build the solution. - Set
copter_vieweras your startup project, then press `F5' to run. You should be able to see an viewer showing a pentacopter by default.
Make sure you have OpenGL and dependency libraries installed:
sudo apt-get install libgl1-mesa-dev mesa-common-dev xorg-dev
sudo apt-get install libglu1-mesa libglu1-mesa-devGo to the parent folder of your MULTICOPTER_DESIGN_PROJECT, and create an
empty build folder:
cd MULTICOPTER_DESIGN_PROJECT
cd ../
mkdir multicopter_design_build_gcc
cd multicopter_design_build_gccUse cmake to do an out-of-source build, and run make to compile:
cmake ../multicopter_design
makeOnce it is done you can try to run the default example:
cd projects/copter_viewer
./copter_viewerYou will see a pentacopter example by default.
Pretty much the same except that you do not need to install OpenGL libraries.
Go to the parent folder of your MULTICOPTER_DESIGN_PROJECT, and create an
empty build folder:
cd MULTICOPTER_DESIGN_PROJECT
cd ../
mkdir multicopter_design_build_macos
cd multicopter_design_build_macosUse cmake to do an out-of-source build, and run make to compile:
cmake ../multicopter_design
makeOnce it is done you can try to run the default example:
cd projects/copter_viewer
./copter_viewerYou will see a pentacopter example by default.
- Use your mouse to change the view: scroll to scale, press the wheel to rotate
and press the wheel +
shiftto translate. - Drag the slide bar on the right to change the design. Once you are happy, scroll down and click the "simulate" button.
- Use your keyboard to control the motion of the copter (
left/right/up/downarrows anda,d,w,s). Presspto pause/resume.
@article{du2016computational,
title={Computational multicopter design},
author={Du, Tao and Schulz, Adriana and Zhu, Bo and Bickel, Bernd and Matusik, Wojciech},
journal={ACM Transactions on Graphics (TOG)},
volume={35},
number={6},
pages={227},
year={2016},
publisher={ACM}
}Please email [email protected] if you have general questions or comments. For troubleshooting please post an issue on github.



