Compilação do QGroundControl em Jetson Orin Nano com L4T 36.4.0 / JP6.1

Este guia detalha o processo de compilação e instalação da versão mais recente do QGroundControl (QGC) em um Jetson Orin Nano rodando L4T 36.4.0 e JetPack 6.1. Embora o objetivo seja ter uma versão funcional, problemas com a parte de vídeo podem surgir, possivelmente devido a configurações codificadas no projeto.

Preparativos

Antes de iniciar a compilação do QGC, alguns passos de configuração do sistema são necessários:

Aumento da Memória Virtual

Para garantir recursos suficientes durante a compilação, é recomendável expandir a memória virtual:


$ sudo fallocate -l 16G /swapfile
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
 

Referência: Configuração de Swap e Memória Virtual no Linux.

Atualização do CMake

O QGC pode exigir uma versão mais recente do CMake. Siga estes passos para instalar a versão 3.31.5:


$ sudo apt-get remove --purge cmake
$ wget https://github.com/Kitware/CMake/releases/download/v3.31.5/cmake-3.31.5.tar.gz
$ tar -zxvf cmake-3.31.5.tar.gz
$ cd cmake-3.31.5
$ ./bootstrap
$ make
$ sudo make install
$ cmake --version
 

Compilação e Instalação do Qt

Devido a problemas recorrentes com downloads de pacotes binários online do Qt, compilaremos o Qt 6.8.2 a partir do código fonte:


$ wget https://qt.mirror.constant.com/archive/qt/6.8/6.8.2/single/qt-everywhere-src-6.8.2.tar.xz
$ tar -xvf qt-everywhere-src-6.8.2.tar.xz
$ cd qt-everywhere-src-6.8.2
$ mkdir build
$ cd build
$ ../configure -opensource -confirm-license -xcb
$ cmake --build . --parallel $(nproc)
$ sudo cmake --install .
 

Referências:

Compilação e Instalação do QGroundControl

Agora, prossiga com a compilação do QGC:


$ git clone --recursive https://github.com/mavlink/qgroundcontrol.git
$ cd qgroundcontrol
$ git submodule update --init --recursive
$ sudo bash ./tools/setup/install-dependencies-debian.sh
$ cmake -DQt6_DIR=/usr/local/Qt-6.8.2/lib/cmake/Qt6/ -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug
$ cmake --build build --config Debug
$ ./build/Debug/QGroundControl
 

Referências:

Problemas Comuns

Problema 1: Erro na Interface QNativeInterface::QX11Application

Este erro geralmente ocorre se o Qt não foi configurado corretamente com suporte a XCB. Certifique-se de que a opção -xcb foi utilizada durante o passo de configuração do Qt.

Um exemplo de erro durante a compilação:


/home/user/qgroundcontrol/src/VideoManager/VideoReceiver/GStreamer/gstqml6gl/qt6/gstqt6glutility.cc:103:62: error: ‘QX11Application’ is not a member of ‘QNativeInterface’; did you mean ‘QWaylandApplication’?
   auto x11_native = app->nativeInterface<QNativeInterface::QX11Application>();
                                                                 ^~~~~~~~~~~~~~~
                                                                 QWaylandApplication
/home/user/qgroundcontrol/src/VideoManager/VideoReceiver/GStreamer/gstqml6gl/qt6/gstqt6glutility.cc:103:78: error: no matching function for call to ‘QGuiApplication::nativeInterface<<expression error=""> >()’
   auto x11_native = app->nativeInterface<QNativeInterface::QX11Application>();
 </expression>

Problema 2: Reprodução de Vídeo RTP

Pode haver falhas na reprodução de streams de vídeo RTP. Um problema conehcido relacionado a isso é descrito em #12492: latest master "qgc.videomanager.videoreceiver.gstreamer.api: broken/invalid nal Type: 1 Slice".

Tags: QGroundControl Jetson NVIDIA Orin Nano L4T

Publicado em 10-1 13:06