Skip to content

uavos/apx-gcs

Repository files navigation

APX Autopilot by UAVOS - Ground Control Software

APX GCS CI

GSC video

APX Ground Control Software (GCS) is open-source project, leaded by UAVOS Company.

This repository contains a cross-platform application, which is part of APX Autopilot project.

The purpose of this application is to manage command & control, mission planing, and safety requirements of Unmanned Vehicle (UAV).

The source code, published in this repository, is not based on any known open-source projects related to UAV industry.

More information about GCS application and its internals can be found here: docs.uavos.com

Build instructions

Clone the repository

git clone --recurse-submodules [email protected]:uavos/apx-gcs.git

GCS project uses APX Shared Library submodule.

Required libraries

  • GStreamer - used for video streaming by some plugins;
  • SDL2 - used for joystick interface by some plugins;
  • Sparkle - required for mac auto updates;
  • AppImageUpdate - required for linux build, see installation in Dockerfile;

CMAKE build

The project uses cmake build system. Some tools require python3 scripts to manage source files generation via jinja and assemble deploy packages for the specified platform.

For the required tools, take a look at Dockerfile and GitHub CI.

Building binaries

After cloning the repos and installing required tools, use the following commands to build the build/out/bin/gcs runtime:

cd apx-gcs
cmake -H. -Bbuild -G Ninja
cmake --build build

Launch the GCS app:

./build/out/bin/gcs

Building application bundle with CMake

To create the GCS application bundle - use bundle target:

cmake --build build --target bundle

Depending on the host platform, this will build either .app macos application or the AppImage linux bundle.

Take a look at some additional targets in Makefile. Although, the makefile is used mainly to create releases.

Docker build

The Dockerfile is included in this repository and may be used as a reference for the tools required to build the application for the linux platform.

See the Docker.mk file for details.

cd apx-gcs
docker pull uavos/apx-gcs-linux:latest
make docker-run
cmake -H. -Bbuild -G Ninja
cmake --build build

Output directories

  • build/out contains runtime binaries;
  • build/deploy contains app bundle;

Runtime requirements

GCS uses serial ports to communicate with the radio modem device. This might require some drivers to be installed on the host platform.

MacOS

The modern APX nodes, starting form version 11 - support CDC. There is no need to install any drivers on the host side. Although, you may find the following links useful:

MacOS app bundle comes with all frameworks built-in and does not require additional actions to perform.

Linux

User should be a member of dialout group to have rights to access the modem device. Execute the following command to add yourself to the group, then reboot.

sudo usermod -aG dialout $USER
sudo apt remove modemmanager -y

AppImage does not include the GStreamer library, and in order to support video streaming - install GStreamer runtime system-wide:

sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav -y

More information about AppImage standard can be found here: appimage.org

Links

© Aliaksei Stratsilatau