README.md 8.38 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
# QGroundControl 
## Open Source Micro Air Vehicle Ground Control Station


* Project:
<http://qgroundcontrol.org>

* Files:
<http://github.com/mavlink/qgroundcontrol>

* Credits:
<http://qgroundcontrol.org/credits>


## Documentation
For generating documentation, refer to /doc/README.

## Notes
Please make sure to delete your build folder before re-building. Independent of which 
build system you use (this is not related to Qt or your OS) the dependency checking and 
cleaning is based on the current project revision. So if you change the project and don't remove the build folder before your next build, incremental building can leave you with stale object files.

23 24 25
## Additional functionality
QGroundcontrol has functionality that is dependent on the operating system and libraries installed by the user. The following sections describe these features, their dependencies, and how to disable/alter them during the build process.

26
### QUpgrade
27
QUpgrade is a submodule (a Git feature like a sub-repository) that contains extra functionality. It is compiled in by default if it has initialized and updated. It can be disabled by specifying the DISABLE_QUPGRADE definition when calling qmake `qmake DEFINES=DISABLE_QUPGRADE`. Note that multiple defines can be specified like this: `qmake DEFINES="DISABLE_QUPGRADE DISABLE_SPEECH"`.
28

29 30 31
To include QUpgrade functionality run the following (only needs to be done once after cloning the qggroundcontrol git repository):
  * `git submodule init`
  * `git submodule update`
32

33
The QUpgrade module relies on `libudev` on Linux platforms.
34

35 36 37 38 39
### Specifying MAVLink dialects
The MAVLink dialect compiled by default by QGC is for the ardupilotmega. This will happen if no other dialects are specified. To override this create a `user_config.pri` file in the root directory and set the `MAVLINK_CONF` variable using qmake's variable notation syntax: `MAVLINK_CONF=sensesoar`. This variable can be a list of dialects that should all be supported like `MAVLINK_CONF=sensesoar ardupilotmega`. Note that doing this may result in compilation errors as certain dialects may conflict with each other!

The `MAVLINK_CONF` variable can also be specified at the command line as an argument to qmake to allow for easy one-off compilations: `qmake MAVLINK_CONF="sensesoar ardupilotmega"`

40 41 42
### Speech syntehsis
QGroundcontrol can notify the controller of information via speech synthesis on the Mac and Linux platforms. This requires the `flite` library on Linux while on Mac text-to-speech support is built in starting with OS 10.6+ (Snow Leopard). This support is enabled by default on all platforms if the dependencies are met. Disabling this functionality can be done by adding the `DISABLE_SPEECH` define when running `qmake` like: `qmake DEFINES=DISABLE_SPEECH`. Note that multiple defines can be specified like this: `qmake DEFINES="DISABLE_QUPGRADE DISABLE_SPEECH"`.

43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
# Build on Mac OSX

To build on Mac OSX (10.6 or later):
- - -
### Install SDL

1. Download SDL from:  <http://www.libsdl.org/release/SDL-1.2.14.dmg>
2. From the SDL disk image, copy the `sdl.framework` bundle to `/Library/Frameworks` directory (if you are not an admin copy to `~/Library/Frameworks`)

### Install QT
- - -
1. Download Qt 4.8+ from <http://download.qt-project.org/official_releases/qt/4.8/4.8.5/qt-mac-opensource-4.8.5.dmg > 
2. Double click the package installer and follow instructions: <http://qt-project.org/doc/qt-4.8/install-mac.html>

### Build QGroundControl
- - -
 (use clang compiler - not gcc)

1. From the terminal go to the `groundcontrol` directory
2. Run `qmake qgroundcontrol.pro -r -spec unsupported/macx-clang CONFIG+=x86_64`
3. Run `make -j4`


# Build on Linux 


To build on Linux:
- - -
71
    sudo apt-get install phonon libqt4-dev libphonon-dev libphonon4 phonon-backend-gstreamer qtcreator libsdl1.2-dev libudev-dev libflite1 flite1-dev build-essential libopenscenegraph-dev
72 73
    cd directory
    git clone https://github.com/mavlink/qgroundcontrol.git
74 75
    git submodule init
    git submodule update
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187

* go to `libs/thirdParty -> libxbee` 
* Create Library -> Readme file in folder
* Ubuntu Application Menu -> Development -> Qt Creator
* QtCreator Menu File -> Open File or Project..
* Open `directory/qgroundcontrol/qgroundcontrol.pro`
* Hit the green play button to compile and launch it


# Build on Windows
- - -

__GNU GCC / MINGW IS UNTESTED, COULD WORK WITH
VISUAL STUDIO 2008 / 2010 EXPRESS EDITION (FREE!)__

Steps for Visual Studio 2008 / 2010:

Windows XP/7:

1. Download and install the Qt libraries for Windows from https://qt.nokia.com/downloads/ (the Visual Studio 2008 or 2010 version as appropriate)

2. Download and install Visual Studio 2008 or 2010 Express Edition (free) from https://www.microsoft.com/visualstudio. If using Visual Studio 2010, make sure you are running at least SP1. There is a linking error you'll encounter otherwise that will prevent compilation.

3. Go to the QGroundControl folder and then to thirdParty/libxbee and build it following the instructions in win32.README

4. Open the Qt Command Prompt program (should be in the Start Menu), navigate to the source folder of QGroundControl and create the Visual Studio project by typing `qmake -tp vc qgroundcontrol.pro`

5. Now start Visual Studio and load the qgroundcontrol.vcproj if using Visual Studio 2008 or qgroundcontrol.vcxproj if using Visual Studio 2010

6. Compile and edit in Visual Studio. If you need to add new files, add them to qgroundcontrol.pro and re-run `qmake -tp vc qgroundcontrol.pro`


## Repository Layout
    qgroundcontrol:
	    demo-log.txt
	    license.txt 
	    qgcunittest.pro - For the unit tests.
	    qgcunittest.pro.user
	    qgcvideo.pro
	    qgroundcontrol.pri - Used by qgroundcontrol.pro
	    qgroundcontrol.pro - Project opened in QT to run qgc.
	    qgroundcontrol.pro.user 
	    qgroundcontrol.qrc - Holds many images.
	    qgroundcontrol.rc - line of code to point toward the images
	    qserialport.pri - generated by qmake.
	    testlog.txt - sample log file
	    testlog2.txt - sample log file
	    user_config.pri.dist - Custom message specs to be added here. 
    data: 
	    Maps from yahoo and kinect and earth. 
    deploy: 
	    Install and uninstall for win32.
	    Create a debian packet.
	    Create .DMG file for publishing for mac.
	    Audio test on mac.	
    doc: 
	    Doxyfile is in this directory and information for creating html documentation for qgc.
    files: 
	    Has the audio for the vehicle and data output. 
		    ardupilotmega: 
			    widgets and tool tips for pilot heading for the fixed wing.
			    tooltips for quadrotor
		    flightgear:
			    Aircraft: 
				    Different types of planes and one jeep. 
			    Protocol: 
				    The protocol for the fixed_wings and quadrotor and quadhil.holds info about the fixed wing yaw, roll etc. 	
			    Quadrotor:
			        Again holds info about yaw, roll etc.
			    Pixhawk:
			        Widgets for hexarotor. Widgets and tooltips for quadrotor.
			    vehicles: 
			        different vehicles. Seems to hold the different kinds of aircrafts as well as files for audio and the hexarotor and quadrotor.
			    widgets: 
			        Has a lot of widgets defined for buttons and sliders.

    images: 
	    For the UI. Has a bunch of different images such as images for applications or actions or buttons.
    lib: 
	    SDL is located in this direcotry. 
	Msinttypes: 
	    Defines intteger types for microsoft visual studio. 
	sdl:
	    Information about the library and to run the library on different platforms. 
    mavlink: 
	    The files for the library mavlink. 
    qgcunittest: 
	    Has the unittests for qgc
    settings: 
	    Parameter lists for alpha, bravo and charlie. Data for stereo, waypoints and radio calibration. 
    src:
	    Code for QGCCore, audio output, configuration, waypoints, main and log compressor.
	apps
	    Code for mavlink generation and for a video application.
	comm
	    Code for linking to simulation, mavlink, udp, xbee, opal, flight gear and interface.
	Has other libraries. Qwt is in directory named lib. The other libraries are in libs.
	lib
	    qwt library
	libs
	    eigen, opmapcontrol, qestserialport, qtconcurrent, utils.
	input
	    joystick and freenect code.
	plugins
	    Qt project for PIXHAWK plugins.
	uas
	    Ardu pilot, UAS, mavlink factory, uas manager, interface, waypoint manager and slugs.
	ui
	    Has code for data plots, waypoint lists and window congfiguration. All of the ui code.
thirdParty: 
	    Library called lxbee.
	    Library called QSerialPort.