Giter Site home page Giter Site logo

ardupilot / apm_planner Goto Github PK

View Code? Open in Web Editor NEW
505.0 77.0 463.0 261.55 MB

APM Planner Ground Control Station (Qt)

Home Page: https://ardupilot.org

License: Other

QMake 0.20% C++ 68.88% C 25.18% Python 0.04% NSIS 0.05% Shell 0.04% HTML 5.39% CSS 0.05% QML 0.11% Dockerfile 0.01% Rich Text Format 0.01% Nasal 0.02% Objective-C 0.02% CMake 0.01%
gcs ground-control-station ardupilot arducopter arduplane autopilot pixhawk apm-planner ardurover copter

apm_planner's Introduction

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)

    • you can verify the version by typing 'qmake -v' and it should report Qt 5.4.2 or greater as the version.
    • NOTE: Tested with Qt5.9.3 wth success
  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
  1. Clone the apm_planner repo
git clone [email protected]:ArduPilot/apm_planner.git
  1. 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:

  • You will be presented with a list of Qt versions and compiler options to install
  • You can install mulitple versions and compilers beside one another and choose which to use later
  • Select any one (or mulitple) of the following options,
    • Qt 5.5 MSVC2013 32-bit
    • Qt 5.5 MSVC2013 64-bit
    • Qt 5.5 MinGW 4.9.2 32-bit (also select the same version of MinGW under Tools)

Configure QtCreator:

  • The installer is pretty smart but it's good to double check everything was setup corretly
  • Start QtCreator
    • Click on the Tools menu item then Options
    • Select Build & Run on the left hand side
    • Look at the Compilers tab
      • Under Auto-detected should be a list of compilers installed, such as:
        • Microsoft Visual C++ Compiler 12.0 (x86)
        • Microsoft Visual C++ Compiler 12.0 (amd64)
        • MinGW 4.9.2 32bit
      • If using MSVC there will be a few others listed as well but that is normal
    • Look at the Qt Versions Tab:
      • Under Auto-detected should be a list of the Qt versions you installed earlier:
        • Qt 5.5.1 MSVC2013 32bit
        • Qt 5.5.1 MSVC2013 32bit
        • Qt 5.5.1 MinGW 32bit
      • If your desired Qt versions is not listed, or you installed one after the initial setup:
        • Click Add
        • Find the qmake.exe for the version you want
          • For example: c:/Qt/5.5/msvc2013/bin/qmake.exe
          • For example: c:/Qt/5.5/mingw492_32/bin/qmake.exe
        • Click Apply
    • Look under the Kits tab:
      • Under Auto-detected should be a list of the appropriate kits:
        • Desktop Qt 5.5.1 MSVC2013 32bit
        • Desktop Qt 5.5.1 MSVC2013 63bit
        • Desktop Qt 5.5.1 MinGB 32bit
      • If a kit with your desired Qt versions and/or compiler is not listed, or you installed a new Qt version or compiler after the initial setup:
        • Click Add, give it a nice name (like Qt 5.5.1 MSVC 32bit)
        • Select the desired compiler from the drop down
        • Select the Qt version (with matching compiler) from the drop down
        • Click Apply
    • Click Ok at the bottom of the window
  • QtCreator is now configured for fun

Build APM Planner 2.0:

  • Start QtCreator (if not already)
  • Click on File then Open File or Project
  • Find qgroundcontrol.pro, then click Open
    • The first time will ask you to configure project
    • Select the desired version (same list of Kits from above)
    • Click Configure Project
  • Go to Projects tab on the left hand side
    • Select the "Shadow Build" checkbox
    • Browse to a location where you want the application to build to
  • From the Build drop down select Build Project qgroundcontrol (or Ctrl+B)
  • Run the generated apmplanner2.exe and enjoy!

Installing this compiled version:

  • To Do

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.

apm_planner's People

Contributors

amolinap avatar andke avatar andyp1per avatar arne-w avatar barthess avatar billbonney avatar dcarpy avatar dongfang avatar harrisonheli avatar hugovincent avatar iragne avatar jgoppert avatar johnl avatar kd0aij avatar kellyschrock avatar lorenzmeier avatar malcom2073 avatar malife avatar mrpilot2 avatar muramura avatar nbrachet avatar oberion avatar peterbarker avatar pixhawk-students avatar stephendade avatar sutherlandm avatar tcanabrava avatar tecnosapiens avatar thomasgubler avatar ustramooner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

apm_planner's Issues

Opening a Simulation connection requires a serial port?

Steps:

Take a Mac without any physical serial port
Start APM Planner
Click the 3rd from right control at top where connection interface is selected
In the Settings for... window that opens, Check "Show advanced options"
Under Link Type, choose Simulation
Click Connect

I get a "resource busy" error referring to the port still selected in the Serial Link section of the Setting for... window. That surprises me because I have selected Simulation, which does not use a physical or network connection AFAIK.

Compass Config: Rotation of Compass using combo boxes

I think we should raise an enhancement to do this using a three combo boxes and some rotated graphics to help. (same idea can be used for board orientation)

| Roll | Pitch | Yaw |
| 0 |
| 45 |
| 90 |
|135 |
|180 |
|225 |
|270 |
|315 |

New Vehicle identification in HeartBeat message

Randy has made this commit to APM:Copter rmackay9/rmackay9-ardupilot@3cf9d5c

This will break lots of our code as we only check for MAV_TYPE_QUADROTOR. No we will have to check for MAV_TYPE_HEXAROTOR, MAV_TYPE_OCTOROTOR, MAV_TYPE_TRICOPTER, MAV_TYPE_HELICOPTER

This can be easily done by using a switch instead of if statement (or we can created a global helper method that returns true if any are in the above set

Crash: Out Of Bounds Exception when receiving Adv Param Updates

When the Advanced Paramater list is incomplete the setRowCount to RowCount+1 will crash the app

see https://github.com/diydrones/apm_planner/blob/master/src/ui/configuration/AdvParameterList.cc#L31

0   __pthread_kill          0x7fff8ee9c212  
1   pthread_kill            0x7fff8ba72b54  
2   abort           0x7fff8bab6dce  
3   qt_message_output   qglobal.cpp 2323    0x10320e519 
4   qt_message  qglobal.cpp 2369    0x10320e7d3 
5   qFatal  qglobal.cpp 2552    0x10320eaf4 
6   qt_assert_x qglobal.cpp 2026    0x10320eb52 
7   QVector<QTableWidgetItem*>::insert  qvector.h   367 0x10467eba4 
8   QTableModel::insertRows qtablewidget.cpp    77  0x104677940 
9   QTableModel::setRowCount    qtablewidget.cpp    376 0x10466a4f4 
10  QTableWidget::setRowCount   qtablewidget.cpp    1867    0x10466b948 
11  AdvParameterList::parameterChanged  AdvParameterList.cc 31  0x100747c27 
12  AdvParameterList::qt_static_metacall    moc_AdvParameterList.cpp    49  0x10087db34 
13  QMetaObject::activate   qobject.cpp 3547    0x103465a5d 
14  UASInterface::parameterChanged  moc_UASInterface.cpp    818 0x100832668 
15  UAS::receiveMessage UAS.cc  954 0x1001f84e8 
16  ArduPilotMegaMAV::receiveMessage    ArduPilotMegaMAV.cc 81  0x1003bf172 
17  ArduPilotMegaMAV::qt_static_metacall    moc_ArduPilotMegaMAV.cpp    51  0x10085151e 
18  QMetaObject::activate   qobject.cpp 3547    0x103465a5d 
19  MAVLinkProtocol::messageReceived    moc_MAVLinkProtocol.cpp 200 0x10083c4cf 
20  MAVLinkProtocol::receiveBytes   MAVLinkProtocol.cc  469 0x10021bd10 
21  MAVLinkProtocol::qt_static_metacall moc_MAVLinkProtocol.cpp 130 0x10083bad5 
22  QMetaCallEvent::placeMetaCall   qobject.cpp 524 0x10345ab1f 
23  QObject::event  qobject.cpp 1194    0x103463afe 
24  QApplicationPrivate::notify_helper  qapplication.cpp    4562    0x103b3ee42 
25  QApplication::notify    qapplication.cpp    3944    0x103b3f425 
26  QCoreApplication::notifyInternal    qcoreapplication.cpp    949 0x10343334e 
27  QCoreApplication::sendEvent qcoreapplication.h  231 0x10014d773 
28  QCoreApplicationPrivate::sendPostedEvents   qcoreapplication.cpp    1573    0x103433b69 
29  processPostedEvents qeventdispatcher_mac.mm 1069    0x103a9a065 
30  QEventDispatcherMacPrivate::postedEventsSourcePerformCallback   qeventdispatcher_mac.mm 1087    0x103a9916e 
31  __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__          0x7fff8a55eb31  
32  __CFRunLoopDoSources0           0x7fff8a55e455  
33  __CFRunLoopRun          0x7fff8a5817f5  
34  CFRunLoopRunSpecific            0x7fff8a5810e2  
35  RunCurrentEventLoopInMode           0x7fff8a03beb4  
36  ReceiveNextEventCommon          0x7fff8a03bb94  
37  BlockUntilNextEventMatchingListInMode           0x7fff8a03bae3  
38  _DPSNextEvent           0x7fff8effb533  
39  -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]            0x7fff8effadf2  
40  -[NSApplication run]            0x7fff8eff21a3  
41  QEventDispatcherMac::processEvents  qeventdispatcher_mac.mm 615 0x103a9ab73 
42  QEventLoop::processEvents   qeventloop.cpp  149 0x10342d065 
43  QEventLoop::exec    qeventloop.cpp  204 0x10342d3da 
44  QCoreApplication::exec  qcoreapplication.cpp    1221    0x10343414a 
45  QApplication::exec  qapplication.cpp    3823    0x103b43b86 
46  main    main.cc 73  0x1001d0d70 

Check for stability issues in Show/hide events

Bill mentioned that AP2 sometimes crashes when moved to the background, there is a decent amount of code in show/hide events to start/stop functionality to prevent CPU usage when in background.

Convert QComboBoxes in configuration screens to use tuples

Currently, QMap<QString,int> is used to convert between configuration string, and actual MAVLink parameter value sent over the wire. QComboBox has an override for addItem which allows for an extra parameter of QVariant type to be added, which can be used to eliminate the need for this Map.

Camera Gimbal and naming of Input/Outputs Channels

Currently we have Inputs 1 - 8 or also known as CH1-CH8, Outputs 1 - 11 or RC1 - RC11 or OUT1 - OUT11, A1 -A11 (though A9-A11 are not connected unless modified)

It would be good to discuss a more consistent naming convention in the software.

cameragimbal

Crash: UASQuickView is crashing on startup

see line https://github.com/diydrones/apm_planner/blob/master/src/ui/uas/UASQuickView.cc#L189

0   QHashNode<QWidget const*, QHash<int, QHash<unsigned long long, QRenderRule> > >::same_key   qhash.h 225 0x1041a3585 
1   QHash<QWidget const*, QHash<int, QHash<unsigned long long, QRenderRule> > >::findNode   qhash.h 887 0x1041a89a5 
2   QHash<QWidget const*, QHash<int, QHash<unsigned long long, QRenderRule> > >::operator[] qhash.h 743 0x1041af6a5 
3   QStyleSheetStyle::renderRule    qstylesheetstyle.cpp    1720    0x104197194 
4   QStyleSheetStyle::renderRule    qstylesheetstyle.cpp    2026    0x10419afaf 
5   QStyleSheetStyle::styleHint qstylesheetstyle.cpp    5124    0x104188e86 
6   QGroupBox::initStyleOption  qgroupbox.cpp   127 0x104336d21 
7   QGroupBox::event    qgroupbox.cpp   349 0x104337877 
8   QApplicationPrivate::notify_helper  qapplication.cpp    4562    0x103b3ee42 
9   QApplication::notify    qapplication.cpp    4527    0x103b4371f 
10  QCoreApplication::notifyInternal    qcoreapplication.cpp    949 0x10343334e 
11  QCoreApplication::sendEvent qcoreapplication.h  231 0x10014d773 
12  QCoreApplicationPrivate::sendPostedEvents   qcoreapplication.cpp    1573    0x103433b69 
13  processPostedEvents qeventdispatcher_mac.mm 1069    0x103a9a065 
14  QEventDispatcherMacPrivate::postedEventsSourcePerformCallback   qeventdispatcher_mac.mm 1087    0x103a9916e 
15  __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__          0x7fff8e912b31  
16  __CFRunLoopDoSources0           0x7fff8e912455  
17  __CFRunLoopRun          0x7fff8e9357f5  
18  CFRunLoopRunSpecific            0x7fff8e9350e2  
19  RunCurrentEventLoopInMode           0x7fff8e3efeb4  
20  ReceiveNextEventCommon          0x7fff8e3efb94  
21  BlockUntilNextEventMatchingListInMode           0x7fff8e3efae3  
22  _DPSNextEvent           0x7fff933af533  
23  -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]            0x7fff933aedf2  
24  QEventDispatcherMac::processEvents  qeventdispatcher_mac.mm 661 0x103a9afb8 
**25    QCoreApplication::processEvents qcoreapplication.cpp    1136    0x1034344f8**   
26  UASQuickView::sortItems UASQuickView.cc 189 0x100625df7 
27  UASQuickView::valueEnabled  UASQuickView.cc 148 0x100626ac7 
28  UASQuickView::loadSettings  UASQuickView.cc 119 0x1006273cb 
29  UASQuickView::UASQuickView  UASQuickView.cc 27  0x10062943f 
30  QGCTabbedInfoView::QGCTabbedInfoView    QGCTabbedInfoView.cpp   8   0x10063e7ad 
31  MainWindow::buildCommonWidgets  MainWindow.cc   637 0x10027dcdd 
32  MainWindow::MainWindow  MainWindow.cc   202 0x100289e35 
33  MainWindow::instance    MainWindow.cc   87  0x10028d40a 
34  QGCCore::QGCCore    QGCCore.cc  148 0x1001d3a48 
35  main    main.cc 72  0x1001d0d6b 

Create a build for Android netbooks using OpenGLES

was Mission planner can't be built on arm/armhf?
I'm trying to build new APM mission planner on toshiba ac100 (armhf, ubuntu 13.04), but get this error:

g++ -c -pipe -Wl,-E -O2 -D_REENTRANT -Wall -W -DGIT_COMMIT= -DGIT_HASH= -DMAVLINK_NO_DATA -DEXTERNAL_USE -DQTCREATOR_UTILS_LIB -DEXTERNAL_USE -DQGC_USE_ARDUPILOTMEGA_MESSAGES -D_TTY_NOWARN_ -D__STDC_LIMIT_MACROS -DQT_NO_DEBUG -DQT_NO_DEBUG -DQT_DECLARATIVE_LIB -DQT_WEBKIT_LIB -DQT_PHONON_LIB -DQT_SVG_LIB -DQT_SQL_LIB -DQT_XML_LIB -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4/QtXml -I/usr/include/qt4/QtSql -I/usr/include/qt4/QtSvg -I/usr/include/phonon -I/usr/include/qt4/QtWebKit -I/usr/include/qt4/QtDeclarative -I/usr/include/qt4 -IC:/openssl-1.0.1e/include -IQsLog -Ilibs/alglib/src -Ilibs/eigen -I. -I.. -Isrc/core -Isrc/internals -Isrc/internals/projections -Isrc/mapwidget -Ilibs/utils -Ilibs -Ilibs/opmapcontrol -Ilibs/mavlink/include/mavlink/v1.0 -Ilibs/mavlink/include/mavlink/v1.0/ardupilotmega -I/usr/include -I/usr/local/include -Isrc/apps/mavlinkgen -Isrc/apps/mavlinkgen/ui -Isrc/apps/mavlinkgen/generator -I. -Iui -Igenerator -Ilibs/qwt -I. -Ilibs/serialport -Isrc -Isrc/ui -Isrc/ui/linechart -Isrc/ui/uas -Isrc/ui/map -Isrc/uas -Isrc/comm -Iinclude/ui -Isrc/input -Isrc/lib/qmapcontrol -Isrc/ui/mavlink -Isrc/ui/param -Isrc/ui/watchdog -Isrc/ui/map3D -Isrc/ui/mission -Isrc/ui/designer -Isrc/ui/configuration -I/usr/include/qt4/phonon_compat -I/usr/X11R6/include -Ibuild-release/moc -Ibuild-release/ui -o build-release/obj/CameraView.o src/ui/CameraView.cc
src/ui/CameraView.cc: In member function ‘virtual void CameraView::paintGL()’:
src/ui/CameraView.cc:240:94: error: ‘glDrawPixels’ was not declared in this scope
src/ui/CameraView.cc: In member function ‘virtual void CameraView::resizeGL(int, int)’:
src/ui/CameraView.cc:246:18: error: ‘GL_PROJECTION’ was not declared in this scope
src/ui/CameraView.cc:246:31: error: ‘glMatrixMode’ was not declared in this scope
src/ui/CameraView.cc:247:20: error: ‘glLoadIdentity’ was not declared in this scope
src/ui/CameraView.cc:248:30: error: ‘glOrtho’ was not declared in this scope
src/ui/CameraView.cc:249:18: error: ‘GL_MODELVIEW’ was not declared in this scope
make: *** [build-release/obj/CameraView.o] Error 1

looks like it require (as qgroundcontrol) openGL, but it's not possible on such devices.

Is it possible to remove openGL requirements? Or may be make an openGL ES port?

ps: x86 linux build works fine: mission planner starts, but I doesn't test is it work properly with APM board

Implement own flashing code instead of relying on avrdude executable

Hi,

i'm the author of the MegaPirateNG FlashTool which also uses avrdude because its easier than implementing the flashing inside the code.

But for example MissionPlanner implements its own flashing code so my question is, why does apm_planner use avrdude and is there any interest in using own flashing code.

I want to get rid of avrdude in my little project (adapting avrdudes flashing code like mission planner does). But i'm a bit worried in borking my hardware so i'm looking if either you guy's already plan to implement it and i simple can adapt that code or if i should implement the code and you guys could use the code. (both projects are qt/c++)

Crash: StandardParamConfig on startup

I It looks like we crash when adding a parameter, this one when we added 'FLTMODE2

'''

0 QHashNode<QObject*, QObject**>::same_key qhash.h 225 0x10346b5df
1 QHash<QObject*, QObject**>::findNode qhash.h 887 0x10346b8b9
2 QHash<QObject*, QObject**>::insertMulti qhash.h 779 0x10346f90e
3 QMultiHash<QObject*, QObject**>::insert qhash.h 935 0x10346f98b
4 QMetaObject::changeGuard qobject.cpp 444 0x103467879
5 QPointer::operator= qpointer.h 68 0x103a3d593
6 QWidget::setFocusProxy qwidget.cpp 6331 0x103bf204b
7 QAbstractSpinBox::setLineEdit qabstractspinbox.cpp 671 0x1042a710c
8 QAbstractSpinBoxPrivate::init qabstractspinbox.cpp 1558 0x1042a72df
9 QAbstractSpinBox::QAbstractSpinBox qabstractspinbox.cpp 152 0x1042a9d25
10 QSpinBox::QSpinBox qspinbox.cpp 206 0x104405e1d
11 Ui_ParamWidget::setupUi ui_ParamWidget.h 65 0x10072bc01
12 ParamWidget::ParamWidget ParamWidget.cc 5 0x10072ad93
13 StandardParamConfig::addCombo StandardParamConfig.cc 24 0x1006e7c5a
14 ApmSoftwareConfig::activeUASSet ApmSoftwareConfig.cc 313 0x10066919e
15 ApmSoftwareConfig::qt_static_metacall moc_ApmSoftwareConfig.cpp 51 0x100873f43
16 QMetaObject::activate qobject.cpp 3547 0x103465a5d
17 UASManager::activeUASSet moc_UASManager.cpp 186 0x100839320
18 UASManager::setActiveUAS UASManager.cc 452 0x1001d9100
19 UASManager::addUAS UASManager.cc 283 0x1001d97aa
20 QGCMAVLinkUASFactory::createUAS QGCMAVLinkUASFactory.cc 112 0x1004bd3ef
21 MAVLinkProtocol::receiveBytes MAVLinkProtocol.cc 406 0x10021ba88
22 MAVLinkProtocol::qt_static_metacall moc_MAVLinkProtocol.cpp 130 0x10083bad5
23 QMetaCallEvent::placeMetaCall qobject.cpp 524 0x10345ab1f
24 QObject::event qobject.cpp 1194 0x103463afe
25 QApplicationPrivate::notify_helper qapplication.cpp 4562 0x103b3ee42
26 QApplication::notify qapplication.cpp 3944 0x103b3f425
27 QCoreApplication::notifyInternal qcoreapplication.cpp 949 0x10343334e
28 QCoreApplication::sendEvent qcoreapplication.h 231 0x10014d7b3
29 QCoreApplicationPrivate::sendPostedEvents qcoreapplication.cpp 1573 0x103433b69
30 processPostedEvents qeventdispatcher_mac.mm 1069 0x103a9a065
31 QEventDispatcherMacPrivate::postedEventsSourcePerformCallback qeventdispatcher_mac.mm 1087 0x103a9916e
32 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION 0x7fff8e912b31
33 __CFRunLoopDoSources0 0x7fff8e912455
34 __CFRunLoopRun 0x7fff8e9357f5
35 CFRunLoopRunSpecific 0x7fff8e9350e2
36 RunCurrentEventLoopInMode 0x7fff8e3efeb4
37 ReceiveNextEventCommon 0x7fff8e3efc52
38 BlockUntilNextEventMatchingListInMode 0x7fff8e3efae3
39 _DPSNextEvent 0x7fff933af533
40 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] 0x7fff933aedf2
41 -[NSApplication run] 0x7fff933a61a3
42 QEventDispatcherMac::processEvents qeventdispatcher_mac.mm 615 0x103a9ab73
43 QEventLoop::processEvents qeventloop.cpp 149 0x10342d065
44 QEventLoop::exec qeventloop.cpp 204 0x10342d3da
45 QCoreApplication::exec qcoreapplication.cpp 1221 0x10343414a
46 QApplication::exec qapplication.cpp 3823 0x103b43b86
47 main main.cc 73 0x1001d0db0
'''

Use ComboBox to improve QuickView parameter selection

For the parameter picker for quick view, could we make it a combo box of available messages with the details underneath, so as you scroll through the combo box it changes. This, i think would be better than having such a wide side scrolling screen?

Serial Port recognition not working on OS X

Cannot connect on Mac OS X

With the new toolbar, the serial port connection is not working due the splitting of the device name at the '-' i.e. the serial port is reported as /dev/tty.usbserial-AH016D6C on my machine

see for comment on the submit 96d573b#src/ui/QGCToolBar.cc

I have a fix (remove the code), but it would be good to understand the reason for the code implementation as is?

Maybe this needs to be factored into the SerialLink object?

Battery Monitor not showing correct values

Should read nearer to 15V as measured. The calc'd one should show the correct value. The current one looks like its the value divided by divider parameter.

Also the settings are not being updated when the selections are changed consistently.

batterymonitor

Standard Params View: Mouse Control of sliders

On OSX it's easy to move the sliders in standard params view with the mouse scroll wheel. This should be disabled as it could lead to random changes in parameters

The same also applies to combo boxes

Joystick control of servos

I think it would be a great feature to enable buttons to control servos through commands such as toggle high/low and increase/decrease servo value.

The toggle could be used for many applications such as light switching etc and the increase/decrease could be used to control servo throws (such as hat switches to control camera gimbal servos).

Add Activity Spinner to telemetry operations.

We should implement an 'activity spinner' and retransmission feature for when setting parameters and sending commands. The APM will send a command_ack or confirm the parameters new value. If we don't get it, we should resend the parameter again and increment the confirmation number, for a limited number of retries. For commands which should fail and display the result code, and restore the previous state (if required)

This will help with some visual cues for user, since you can be left wondering if anything is happening, for example when Trigger level etc....

UASInterface::getAirframe() inconsistancies

It seems that UASInterface::getAirframe() returns 5 for fixed wring. AP2 currently has 2 for fixed wing. Need to verify what the proper return is from APM, and ensure that AP2 matches.

This is defined inside the mavlink headers, which is slightly odd, is the version of MAVLink in AP2 different from the one APM is using nowadays?

I saw this with Arduplane V2.74beta2 installed on my APM.

PX4 FW Flashing requires reboot on failure

In testing PX4 FW flashing, if you pull cable out while flashing you will need to restart AP2.0 or even reboot your laptop depending on the status of the com port device drive.

The code attempts to restart the process, but fails at line #753 in PX4FirmwareUploader.cc. it returns, but never retries

Upper Right Comms Settings Box does not reflect stored settings

When starting AP2 the upper right combo box for selected connection and baud shows the first link option in the list. It not reflecting the loaded settings when the link is created at startup. If click connect it will connect with the last know setting as expected.

see line 163 in QGCCore.cc for the creation of the port when loaded and line #72 of seriallink.cc where the call is made to load the settings

Implement a smarter MAVLink Parameter Manager (QGCUASParamManager)

Right now, parameter management is implemented by the QGCParamWidget. Two changes that I think need to be made:

  1. It should be implemented in its own class seperate of the UI.
  2. It should be smarter about parameter requests. If another class requests a parameter, it should know that it has already requested this parameter and send it to the class directly, rather than re-requesting it from the MAV. It should also handle request timeouts, which are already implemented in QGCParamWidget, so can easily be brought over.

Audio announcements are incomplete or incorrect.

Audio announcements need to be adjusted to work better with the variations in the autopilots supported in the AP2. APM uses custom_mode for it's modes, and Native PX4 uses system_mode. The idea is to factor the code to speak text into the autopilot specifications and this allows for more meaningful strategies based on the MAVLink protocol implementation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.