Building DroneEngage Code

If you want to build binaries form sourcecode in order to make it compatible with your linux platform you need to follow the following steps. In this scenario we will use RPI-4 with Bullseye image. However you can use any version including RPI-5 and Bookworm, or you can even compile it using the same steps on your linux laptop or VM.

Preparing prerequisites

The following steps assume that you know how to install a raspberry-pi and have a raspberry-pi board up and running and accessible using SSH.

ssh pi@raspberrypi.local

cd ~

sudo apt update
sudo apt install git
sudo apt install cmake
sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libssl-dev
sudo apt-get install libboost-all-dev

Now you have everything ready.

Downloading Code

mkdir de_code
cd de_code
git clone https://github.com/DroneEngage/droneengage_communication.git
git clone https://github.com/DroneEngage/droneengage_mavlink.git

Compiling Code

Both projects use CMake with automated version management and support for DEBUG and RELEASE builds.

Building droneengage_communication:

cd ~/de_code/droneengage_communication

# For DEBUG build (default)
./build.sh

# For RELEASE build (optimized, increments version)
./build.sh RELEASE

# With additional debug options
./build.sh DEBUG DDEBUG=ON

Building droneengage_mavlink:

cd ~/de_code/droneengage_mavlink

# For DEBUG build (default)
./build.sh

# For RELEASE build (optimized, increments version)
./build.sh RELEASE

# With additional debug options
./build.sh DEBUG DDEBUG=ON

Build Script Options:

  • DEBUG: Default build type with debug symbols (-g3, -Og)

  • RELEASE: Optimized build (-O2) with version increment

  • DDEBUG=ON: Enable detailed debug output

  • Additional compiler flags can be passed as parameters

Version Management:

Both projects use automatic version management: - Format: MAJOR.MINOR.BUGFIX.BUILD - BUILD number auto-increments on RELEASE builds - Version files stored in .version in project root - Current versions:

  • droneengage_communication: 3.10.1.x

  • droneengage_mavlink: 5.6.8.x

Output binaries will be in ./bin

Generating Debian Packages (Optional)

Both projects support generating Debian (.deb) packages for easier installation and distribution.

Generate Debian packages:

# For droneengage_communication
cd ~/de_code/droneengage_communication/build
cpack -G DEB

# For droneengage_mavlink
cd ~/de_code/droneengage_mavlink/build
cpack -G DEB

Install generated packages:

# Install communication package
sudo dpkg -i de-communicator-pro-*.deb

# Install mavlink package
sudo dpkg -i de-mavlink-plugin-*.deb

Package Information:

  • droneengage_communication: Installs to $HOME/drone_engage/de_comm/ - Binary: de_ardupilot - Config files: de_comm.config.module.json, root.crt, template.json - Scripts directory included

  • droneengage_mavlink: Installs to $HOME/drone_engage/de_mavlink/ - Binary: de_ardupilot - Config files: de_mavlink.config.module.json, template.json

Both packages include dependency information and will automatically install required system libraries if available.