ArduPilot / apm_planner

APM Planner Ground Control Station (Qt)
https://ardupilot.org
Other
501 stars 461 forks source link
apm-planner arducopter ardupilot arduplane ardurover autonomous-vehicles autopilot copter gcs ground-control-station open-source pixhawk plane robot-operating-system ros

APM Planner 2.0

Travis CI Build: Build Status

Support: ardupilot.com Support Forum for APM Planner 2.0

Support is handled in the forum, we keep issues here known problems and enhancements

Developer Chat: https://gitter.im/diydrones/apm_planner

Gitter

Credits: https://ardupilot.org/planner2/docs/credits-and-contributors.html

Waffle.io Progress Graph

Throughput Graph

Documentation

see https://ardupilot.org/planner2/

Mac OS X

To build on Mac OS X (10.6 or later):

Install QT

1) Download Qt 5.4.2 or greater (Does not work with Qt4.x)

2) Double click the package installer

Or install QT with brew: brew link qt5 --force

Build APM Planner

1) From the terminal go to the apm_planner directory created when you cloned the repository.

2) Run qmake -spec macx-clang apm_planner.pro (old version qmake -spec macx-g++ apm_planner.pro)

3) Run make -j8

4) Run open ./release/apmplanner2.app

Linux

Install the required packages:

Packages needed on Ubuntu 18.04 LTS:

Be sure to run apt-get update first

sudo apt-get update
sudo apt-get install qt5-qmake qt5-default \
  qtscript5-dev libqt5webkit5-dev libqt5serialport5-dev \
  libqt5svg5-dev qtdeclarative5-qtquick2-plugin \
  libqt5opengl5-dev qml-module-qtquick-controls
sudo apt-get install git libsdl1.2-dev  libsndfile-dev \
  flite1-dev libssl-dev libudev-dev libsdl2-dev python-serial python-pexpect

Packages needed on Ubuntu 22.04 LTS:

(NOTE: On Ubuntu 22.04 use only the native (ubuntu) Qt version 5.15.3 as the official Qt 5.15.2 which comes with the Qt Maintenance tool only supports OpenSSL 1.1.1 which is not supported by Ubuntu 22.04 anymore.)

Be sure to run apt-get update first

sudo apt-get update
sudo apt-get install qt5-qmake qtbase5-dev qtscript5-dev libqt5webkit5-dev libqt5serialport5-dev libqt5svg5-dev libqt5opengl5-dev qml-module-qtquick-controls
sudo apt-get install git libsdl1.2-dev libsndfile1-dev flite1-dev libssl-dev libudev-dev libsdl2-dev

Packages needed on Fedora (tested against Fedora 21), use:

sudo yum update
sudo yum install qt-devel qt5-qtscript-devel \
  qt5-qtwebkit-devel qt5-qtserialport-devel qt5-qtsvg-devel \
  qt5-qtdeclarative-devel qt5-qtquick1-devel pyserial python-pexpect

sudo yum install SDL-devel libsndfile-devel \
  flite-devel openssl-devel libudev-devel SDL2-devel

Clone the repository in your workspace:

cd ~/workspace
git clone https://github.com/diydrones/apm_planner

Build APM Planner:

cd ~/workspace/apm_planner
qmake apm_planner.pro
make

Run APM Planner:

./release/apmplanner2

Permanent installation (optional, if you'd like to install APM Planner in a fixed location):

There are two ways to do this:

a) Using Debuild:

cd ~/workspace/apm_planner/debian
./gitlog-to-changelog.pl > changelog

cd ..
debuild -us -uc -d

Then install the deb via

dpkg -i ~/workspace/apmplanner2_2.0.XX_YYYY.deb

Where XX is the version number, and YYY is your architecture. This method should add it to your launcher too.

If it does not install due to dependancies, you can resolve them with

sudo apt-get install -f

Then attempt to install again.

b) Using make:

cd ~/workspace/apm_planner
sudo make install

This will place the binary in your /bin/ folder and corresponding files in /share/

OpenBSD

To build on OpenBSD 6.2

1) install dependencies

pkg_add qt5 libsndfile sdl sdl2 flite py-serial py-pexpect openssl git

2) Clone the apm_planner repo

git clone git@github.com:ArduPilot/apm_planner.git

3) Build the project

cd apm_planner
qmake-qt5 apm_planner.pro
make

If the project compiled without errors you will find the binary in ./release

Windows

To build on Windows there are two options:

Install Qt with the online Qt installer:

Configure QtCreator:

Build APM Planner 2.0:

Installing this compiled version:

Repository Layout (2014-3-28: out-of-date, needs to be fixed)

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
    testlog2.txt 
    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. Agian 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.