Botspot / pi-apps

Raspberry Pi App Store for Open Source Projects
GNU General Public License v3.0
2.03k stars 205 forks source link

QGroundControl on Pi-Apps #349

Open adri94 opened 3 years ago

adri94 commented 3 years ago

I was happy to see Mission Planner on PiApps but it runs with mono. I tried to compile QGC for arm but I am not skilled enough. Do you think it is possible to add it to piApps ?

Thanks,

Botspot commented 3 years ago

I've tried following their compilation instructions. https://dev.qgroundcontrol.com/master/en/getting_started/index.html

git clone --recursive -j8 https://github.com/mavlink/qgroundcontrol.git
cd qgroundcontrol
mkdir build
cd build
qmake ../

The build failed on the qmake command:

pi@raspberrypi:~/qgroundcontrol/build $ qmake ../
Info: creating stash file /home/pi/qgroundcontrol/build/.qmake.stash
Project MESSAGE: Qt version 5.11.3
Project MESSAGE: Linux build
Project MESSAGE: Daily Build
Project MESSAGE: QGroundControl Development master:36f7c2212 2021-02-06 00:32:56 +0000
Project MESSAGE: Release flavor
Project MESSAGE: Using Default QtLocation headers
Project MESSAGE: Skipping support for Pairing
Project MESSAGE: Using MAVLink dialect 'ardupilotmega'.
Project MESSAGE: Skipping support for Zeroconf (unsupported platform)
Project MESSAGE: Looking for Airmap in folder "/home/pi/qgroundcontrol/libs/airmapd", variant: "Qt.5.11"
Project MESSAGE: Taisync disabled
Project MESSAGE: Microhard disabled
Project MESSAGE: Skipping support for video streaming (GStreamer libraries not installed)
Project MESSAGE: Installation instructions here: https://github.com/mavlink/qgroundcontrol/blob/master/src/VideoReceiver/README.md
Project ERROR: Unknown module(s) in QT: location positioning quickcontrols2 texttospeech serialport location-private positioning-private waylandclient

After installing everything QT-related I could find:

sudo apt install qt*-dev libqt*-dev

There are now fewer unknown modules.

Project ERROR: Unknown module(s) in QT: location-private positioning-private

There appears to be no qt packages that match those. I'll need someone with more QT knowledge to look at this and see how to fix it.

adri94 commented 3 years ago

I have found this :

"This worked for me. Just change version to match you environment:

sudo apt-get install speech-dispatcher libudev-dev libsdl2-dev libgstreamer1.0-0 gstreamer1.0-plugins-base libgstreamer-plugins-base1.0-dev libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0 qt5-default qtbase5-private-dev qtbase5-dev qtbase5-dev-tools libqt5texttospeech5-dev libqt5svg5-dev qtmultimedia5-dev libqt5serialbus5-dev libqt5charts5-dev libqt5serialport5-dev qtdeclarative5-private-dev qttools5-private-dev qtquickcontrols2-5-dev libssl-dev
rm -rf qtlocation
git clone https://github.com/qt/qtlocation.git
cd qtlocation
git checkout v5.11.3
mkdir build
cd build/
qmake ../qtlocation.pro
make -j4
sudo make install

Source: https://discuss.ardupilot.org/t/how-to-cross-compile-qgroundcontrol-for-raspberry-pi3/26790/42"

Link : https://stackoverflow.com/questions/65194181/unknown-modules-in-qt-location-private-positioning-private

Botspot commented 3 years ago

Procedure

Prerequisites

sudo apt install speech-dispatcher libudev-dev libsdl2-dev libgstreamer1.0-0 gstreamer1.0-plugins-base libgstreamer-plugins-base1.0-dev libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0 qt5-default qtbase5-private-dev qtbase5-dev qtbase5-dev-tools libqt5texttospeech5-dev libqt5svg5-dev qtmultimedia5-dev libqt5serialbus5-dev libqt5charts5-dev libqt5serialport5-dev qtdeclarative5-private-dev qttools5-private-dev qtquickcontrols2-5-dev libssl-dev

Install qtlocation

cd ~/
rm -rf qtlocation
git clone https://github.com/qt/qtlocation
cd qtlocation
git checkout v5.11.3
mkdir build
cd build/
qmake ../qtlocation.pro
make -j4
sudo make install

Install QGroundControl

sudo apt install libqt5x11extras5-dev libqt5waylandclient5-dev
cd ~/
git clone --recursive -j8 https://github.com/mavlink/qgroundcontrol.git
cd qgroundcontrol
mkdir build
cd build
qmake ../

All of the above is untested. It's simply my way to documenting my progress.

Botspot commented 3 years ago

I'm stuck on Project ERROR: Library 'wayland-client' is not defined.

Botspot commented 3 years ago

It doesn't look possible.

If someone gets it working then we can re-open the issue.

dd2-42 commented 3 years ago

Hey I have replied on https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=310817&p=1861368#p1861368.

Have a look into it, I have compiled it successfully. Let me know in case of any issue.

Thanks

Botspot commented 3 years ago

Have a look into it, I have compiled it successfully. Let me know in case of any issue.

Thanks

Excellent! Let's try to make a script that installs qgroundcontrol:

#!/bin/bash
set -e #exit on any errors
git clone https://github.com/mavlink/qgroundcontrol.git
cd qgroundcontrol
git checkout Stable_V3.5.6
mkdir build
cd build
git submodule update --init --recursive
echo 'linux {
    linux-g++ | linux-g++-64 | linux-g++-32 | linux-clang {
#        message("Linux build")
#        CONFIG  += LinuxBuild
#        DEFINES += __STDC_LIMIT_MACROS
#        DEFINES += QGC_GST_TAISYNC_ENABLED
#        DEFINES += QGC_GST_MICROHARD_ENABLED
#        linux-clang {
#            message("Linux clang")
#            QMAKE_CXXFLAGS += -Qunused-arguments -fcolor-diagnostics
#        }
#    } else : linux-rasp-pi3-g++  {
        message("Linux R-Pi2 build")
        CONFIG += LinuxBuild
        DEFINES += __STDC_LIMIT_MACROS __rasp_pi2__
        DEFINES += QGC_GST_TAISYNC_ENABLED
        DEFINES += QGC_GST_MICROHARD_ENABLED' > $(pwd)/QGCCommon.pri
qmake -r ../qgroundcontrol.pro CONFIG+=release
make -j1
ahmadkriez commented 3 years ago

I reached to advanced step in building QGC (master or 4.1.3) for arm (Specifically: aarch64 processor in Nvidia Jetson nano kit 2GB -Ubuntu 18.04). To do that, i prepared the following:

it is still under compiling

adri94 commented 3 years ago

Hello,

Thank you for the work on this matter. I tried the install script but I get this :

Project ERROR: Unknown module(s) in QT: location positioning location-private positioning-private

theofficialgman commented 2 years ago

I just wanted to note it should not be required to build qtlocation from source, it is available (as well as with the dev libraries) at qtlocation5-dev (which will install the other qtlocation dependencies)