LogoLogo
  • Welcome
  • Vehicle Operation
    • Getting started
    • Auterion Suite
      • Dashboard
      • Fleet Management
        • Vehicles
          • Cloud Features
          • Groups
        • Flights
        • Compliance
      • Manufacturer
        • Service Bulletins
      • Administration
      • User Management
      • Simulations
    • Auterion Mission Control
      • Installation
      • First steps
      • UI Breakdown
        • Navigating between the views
        • Fly View
          • Fly View UI Overview
          • Vehicle status indicator
          • Flight mode selector
          • Quick actions sidebar
          • Connection manager
          • Vehicle Dashboard
          • Flight Map
          • Camera View
          • Monitoring the Flight
          • Flying Manually (RC/Joystick)
          • Flying a Mission
        • Plan View
          • Plan UI Overview
          • Plan tools
            • Mission Menu
            • Waypoint Missions
            • Survey Patterns
              • Area Survey
              • Corridor Scan
          • Mission Summary
          • Mission Editor Tab
            • Start Section
            • Mission Section
            • End Section
            • Extras
          • Terrain visualization
          • GeoFence
          • Rally Points
        • Quick Vehicle Menu
          • Pre-Flight Checklist
          • Connectivity
        • Photo Gallery
        • Settings
        • Pilot Login
      • Useful resources
        • Mission Planning
          • Mission Cloud Sync
          • Terrain Following
          • Import Geo-Awareness data or KML overlays
        • Maps and Custom Overlays
          • Using Offline Maps
          • Importing GeoPDF overlays
        • Track GCS as Smart Asset in Suite
        • Live PX4 Log Streaming
        • Monitor Local Flights with ADS-B
        • GPS Denied Workflow
        • Windows Crash Logs Analysis
        • Screen Recordings
    • Remote Controllers
      • Skynav Remote Controller
        • Installing Mission Control
        • Joystick and Button Mapping
        • Using LTE for Online Maps in the Field
        • Advanced Radio Settings
        • Drop Guards and Chest Strap
        • Unit Serial Number
    • Settings & Maintenance
      • Vehicle Setup
      • WiFi Setup
      • Compass Calibration
      • Safety Setup
      • Joystick Setup
      • Vehicle Web UI
      • Software Update
      • Remote ID
        • How Remote ID works
        • Remote ID indicators in AMC
        • Frequently Asked Questions
    • Precise Flight
  • App development
    • Getting Started
      • Development environment Setup
      • Connecting to a device
      • Application Development
    • App Framework
      • Building your First App
      • Apps API
      • Sensor Data
      • Video Streams
      • Photos
      • Hardware Peripherals
      • Persistent Storage
      • MAVLink
      • Native Docker Compose
      • App Parameters
      • Log App Data to Auterion Suite
        • How to log Time Series Data
        • How to log basic Text Output
      • How to store an App's Binary Data on Skynode
      • User Web Interfaces
      • Build Arguments
      • Debugging apps with SSH
      • Debugging Apps with gdb
      • PX4 Messages in ROS 2
      • DDS / ROS2 Configuration
      • Structuring Applications with Multiple Services
    • Auterion SDK
      • Installation
      • Write Your First App
      • SDK API
      • Flight Mode API
        • Flight Mode API
        • Dynamics in Body Frame
        • Dynamics in Local Frame
        • Go-To in Local Frame
      • System State API
      • Peripheral Actuator Control API
      • Camera API
      • Navigation Input API
        • Global Navigation
        • Local Navigation
      • Visual Tracking API
    • Simulation
      • Virtual Skynode
        • Simulation-Gazebo Reference
        • Simulation-AirSim Reference
        • Connecting from other Computers
        • Resetting Virtual Skynode
        • Multiple Virtual Skynodes on single machine
      • Physical Skynode
    • Resources
      • Cross Compilation - Faster Builds
      • Auterion CLI Reference
      • Troubleshooting
      • App Tutorial
      • Skynode Vision Kit S
        • Set up the Vision Kit
        • Install and test a simple vision app
    • Legacy app workflow
      • App Development
      • MAVLink
      • Using the App Template
      • Example Applications
        • Autopilot Telemetry (C++)
        • Autopilot Telemetry (Python)
        • Photo Gallery
  • Hardware Integration
    • Getting started
      • Required Sensors
      • Wiring Skynode to the Vehicle
      • Actuators Setup
      • Sensors Setup
        • Set Orientations
        • Compass Calibration
        • Gyroscope calibration
        • Accelerometer calibration
        • Level horizon calibration
        • Airspeed calibration
      • Bench Test
      • Tuning
      • Creating Airframe Configurations for APX4
    • Skynode
      • Skynode X
      • Skynode ENT/GOV
      • Skynode X Integration and Development Kit
        • Get Skynode ready
        • Power Skynode
        • Register Skynode
        • Connect Skynode to AMC
        • Sensors and Peripherals
        • Next steps
      • Payloads
        • Generic USB Webcams (UVC)
        • Workswell Wiris Pro
        • Trillium HD40-LV
        • NextVision Gimbals (with TRIP2)
        • Sony Alpha a7R IV
        • Phase One iXM-100
        • Gremsy Gimbals
      • Connectivity
        • USB-C Network Connection
        • WiFi
        • LTE Setup
        • SIYI MK15
        • Microhard Data Link
        • Data Link Wiring
        • Silvus Data Link
        • Doodle Labs Data Link
        • Custom Data Link
        • Ethernet Interface Configuration
      • Skynode LED Meanings
      • Troubleshooting
      • Legacy DSM/DSMX Support
      • Peripherals
        • Power Module
        • 12S Power Module
        • Pixhawk Adapter Board
        • Pixhawk Payload Bus
        • Data Link Module
        • PX4 F9P GPS
        • Freefly RTK GPS
        • Airspeed Sensor
        • LIDAR
        • USB camera
        • See3CAM_24CUG
    • Skynode S
      • Datasheet
      • Interfaces
      • Basic Vehicle Integration
      • Add LTE to Skynode S
      • Skynode S LED status indicator
      • Skynode S flight logs
    • AI Node
      • Datasheet
      • Evaluation Kit
        • Power AI Node
        • Wiring AI Node to Skynode
        • Internet sharing with Skynode
        • Activate AI Node on Suite
      • Dimensions and CAD model
      • Interfaces
      • Connectivity
        • USB Network Connection
        • Serial Debug Connection
        • AI Node as Network Bridge
        • Standalone Internet Access
      • Updating AuterionOS
    • Advanced Airframe Integration
      • Custom power setup
      • Wiring without Breakout Boards
      • Gripper Integration
        • Setting up Payload Delivery with Gripper
      • ESC Calibration
      • Camera Calibration
        • Camera Calibration on a Computer
        • Camera Calibration on Skynode
      • Serial Port Configuration
    • Flight controller customization
      • AMC's Advanced Mode
      • Flight Controller Shell
      • Micro XRCE-DDS
    • AuterionOS Customization
      • OEM Tools Installation
      • Adding SSH keys
      • Changing the Root Password
      • Modifying Environment Variables
      • Pre-install Applications
      • Suite Manufacturer Tools
    • AuterionOS System Guide
      • Introduction
      • Flashing PX4 Binary and Vehicle Config
      • Building and Flashing PX4 Firmware
      • SSH Access
      • Filesystem and partitions
      • Environment Variables Reference
      • Types of AuterionOS Images
      • Mavlink Routing and Endpoints
      • Packaging AuterionOS Image
    • Additional Resources
      • Remote ID
        • How Remote ID works
        • Vehicle Serial Number
        • Communication Diagram
        • Remote ID configuration
        • How Auterion tested
      • Auto-Tuning
  • Release Notes
    • APX4
      • APX4 3.2
        • APX4 3.2.10
        • APX4 3.2.1
      • APX4 3.1
        • APX4 3.1.1
        • APX4 3.1.0
      • APX4 3.0
        • APX4 3.0.8
        • APX4 3.0.5
      • APX4 2.7
        • APX4 2.7.37
        • APX4 2.7.25
        • APX4 2.7.20
        • APX4 2.7.12
        • APX4 2.7.7
        • APX4 2.7.6
      • APX4 2.6
        • APX4 2.6.1
      • APX4 2.5
        • APX4 2.5.14
        • APX4 2.5.13
        • APX4 2.5.8
        • APX4 2.5.7
        • APX4 2.5.5
        • APX4 2.5.4
        • APX4 2.5.0
      • APX4 2.4
        • APX4 2.4.2
        • APX4 2.4.1
      • APX4 2.3
        • APX4 2.3.0
      • APX4 2.2
        • APX4 2.2.2
        • APX4 2.2.0
      • APX4 2.1
        • APX4 2.1.1
        • APX4 2.1.0
      • APX4 2.0
        • APX4 2.0.2
        • APX4 2.0.0
    • AuterionOS
      • AOS for AI Node
        • AI Node AOS 1.1.0
        • AI Node AOS 1.0.2
        • AI Node AOS 1.0.0
        • AI Node AOS 0.7.0
        • AI Node AOS 0.6.1
        • AI Node AOS 0.6.0
        • AI Node AOS 0.5.0
        • AI Node AOS 0.4.0
      • AOS for Skynode
        • AOS 3.7
          • AOS 3.7.25
          • AOS 3.7.9
        • AOS 3.6
          • AOS 3.6.14
        • AOS 3.5
          • AOS 3.5.13
        • AOS 3.3
          • AOS 3.3.9
        • AOS 3.2
          • AOS 3.2.9
        • AOS 2.19
          • AOS 2.19.14
        • AOS 2.15
          • AOS 2.15.10
          • AOS 2.15.7
        • AOS 2.12
          • AOS 2.12.8
        • AOS 2.10
          • AOS 2.10.2
        • AOS 2.8
          • AOS 2.8.1
        • AOS 2.7
          • AOS 2.7.15
        • AOS 2.6
          • AOS 2.6.1
        • AOS 2.5
          • AOS 2.5.14
          • AOS 2.5.13
          • AOS 2.5.8
          • AOS 2.5.7
          • AOS 2.5.5
          • AOS 2.5.4
          • AOS 2.5.0
        • AOS 2.4
          • AOS 2.4.1
        • AOS 2.3
          • AOS 2.3.0
        • AOS 2.2
          • AOS 2.2.2
          • AOS 2.2.0
        • AOS 2.1
          • AOS 2.1.1
          • AOS 2.1.0
        • AOS 2.0
          • AOS 2.0.2
          • AOS 2.0.0
    • Auterion Mission Control
      • AMC 1.34
        • AMC 1.34.21
        • AMC 1.34.14
      • AMC 1.33
        • AMC 1.33.13
      • AMC 1.32
        • AMC 1.32.7
      • AMC 1.30
        • AMC 1.30.17
      • AMC 1.29
        • AMC 1.29.7
      • AMC 1.26
        • AMC 1.26.8
      • AMC 1.22
        • AMC 1.22.3
      • AMC 1.19
        • AMC 1.19.5
      • AMC 1.18
        • AMC 1.18.3-1
        • AMC 1.18.3
      • AMC 1.17
        • AMC 1.17.10
        • AMC 1.17.9
      • AMC 1.15
        • AMC 1.15.0
      • AMC 1.14
        • AMC 1.14.6
        • AMC 1.14.0
      • AMC 1.13
      • AMC 1.12
      • AMC 1.11
      • AMC 1.10
        • AMC 1.10.1
        • AMC 1.10.0
      • AMC 1.9
        • AMC 1.9.1
        • AMC 1.9.0
      • AMC 1.8
    • Hardware
      • Skynode Rev 11 (Jan 2022)
Powered by GitBook
On this page
  • Getting app examples
  • Building the example apps
  • Building for Virtual Skynode
  • Installing the app-base
  • Installing the example app
  • Show status and logs of an app
  • Extending the examples
  1. App development
  2. Getting Started

Application Development

Workflow to build and install an app on AuterionOS

PreviousConnecting to a deviceNextApp Framework

Last updated 1 year ago

Only install apps from trusted sources

Make sure to have right safety precautions when testing apps Apps can have the possibility to deeply interact with the system. Malfunctioning apps can have flight-safety critical implications to the operation of the aircraft.

You need to be an Auterion OEM or part of the App Developer program in order to distribute apps

Getting app examples

App examples can be downloaded from . There are currently the following examples available:

  • minimal-cpp: A bare minimum example app using C++

  • get-telemetry-cpp: A C++ app that obtains vehicle telemetry via MAVLink

  • get-telemetry-python: A python app that obtains vehicle telemetry via MAVLink

  • crosscompile-cpp: A minimal C++ with a full cross-compilation setup

The apps, albeit fairly minimal, can serve as a starting point for developing your own apps.

Building the example apps

Go into the directory of the app, which is the directory that contains the auterion-app.yml file, and run

auterion-cli app build

This command will create a new directory called build that contains a *.auterionos file. The *.auterionos is the app image that can be installed your Auterion device.

You need a working docker installation as well as docker-compose-plugin for building apps

Build failed? Auterion-cli simply calls docker build in the background. For debugging, you can cd in the directory where your Dockerfile is, and run docker build --platform=linux/arm64 .

Building for Virtual Skynode

auterion-cli app build --simulation

By doing so, the app's target architecture is configured to linux/amd64, enabling it to run within the simulation environment on your machine, provided your machine operates on the specified architecture.

Installing the app-base

Most AuterionOS apps require an app base to be installed on the target Skynode. The app base is a common layer that includes most of the runtime dependencies for apps. This allows the image size of apps to remain small, while still be able to access powerful libraries and tools.

The app base itself is distributed as an app (.auterionos file) as well and can be obtained from the developer account on Auterion Suite.

To install the app base, run

auterion-cli app install /PATH/TO/app-base-v0.auterionos

The installation can take up to 10 minutes. The app base itself is large, but only needs to be installed once.

The app base needs to be installed before any app can be installed on Skynode

To verify that the app base was correctly installed, you can run the app list command of auterion-cli:

$ auterion-cli app list

Name                   Version    Status    Enable    Services              Status    Enable
---------------------  ---------  --------  --------  --------------------  --------  --------
app-base-v0            v0         stopped   unknown   base-image            exited    unknown

The app base will show as "stopped". This is intended and normal. The app base itself does not do any work, its only purpose is to be present for other apps to use. Therefore, it is correct that it does not run, it only has to be present.

Installing the example app

You can install the example app, (or any other app) using the app install command. In case of the example app we built above, the .auterionos file will be in the build directory.

$ auterion-cli app install build/com.auterion.test-app.auterionos
 
Installing artifact build/com.auterion.test-app.auterionos
Looking for the update artifact
Check if your device is online...
API: v1.2
Uploading artifact: 99.5kit [00:00, 42.2Mit/s]                                                                                                                                   
Waiting for the device to complete the installation
The device has been updated successfully

Show status and logs of an app

You can get the status of an app using the app list command. A working app will be shown as "running".

If an app crashes, it gets restarted automatically by the system. If an app crashes on boot, the app will constantly appear as "restarting".

$ auterion-cli app list

Name                   Version    Status    Enable    Services              Status    Enable
---------------------  ---------  --------  --------  --------------------  --------  --------
app-base-v0            v0         stopped   unknown   base-image            exited    unknown
com.auterion.test-app  0.0.1      running   enabled   test-app              running   running

To get live logs of an app, use the app logs command.

auterion-cli app logs -f <APP NAME>

Live logs with the `-f` option require at least AuterionOS 2.7 or later

e.g.

$ auterion-cli app logs -f com.auterion.test-app

test-app  | Running since 293 seconds ..
test-app  | Running since 294 seconds ..
test-app  | Running since 295 seconds ..
test-app  | Running since 296 seconds ..
test-app  | Running since 297 seconds ..
test-app  | Running since 298 seconds ..

Press CTRL+C to quit the live log

Extending the examples

An AuterionOS app is structured the following way

  • auterion-app.yml - Contains all meta-information about the app, like name, version, author etc. This file needs to be in the project root directory. Each build entry points to the location of a Dockerfile that needs to be built and run.

  • Dockerfile - Describes how to actually build and run your app. You can use any docker command in here. Apps shall inherit from the auterion/app-base image. The Dockerfile gets discovered in the build process by the tool looking at the locations indicated in the auterion-app.yml file.

  • Source files - The source files of your app. They can be in any language, since the app runs in a docker container

To extend the examples, do the following steps

  1. In the auterion-app.yml, set

    1. app-name with the name of your app

    2. app-author with the reverse-domain notation of your entity, e.g. com.auterion

    3. app-version with the version of your app

    4. In services list your the services (Docker images / containers) your app will have. Most apps just have one service. Set the build of your service to the location where the Dockerfile for your service is. It is also possible to use existing docker images which the machine where auterion-cli will be executed has access to. To do so use the image: directive instead of build:. auterion-cli will attempt to docker pull any images that are not built from source.

  2. Add the sources for your app

  3. Edit / replace the Dockerfile with instructions how to build / run your app

App services should inherit from the auterion/app-base image.

The auterion/app-base image is a multi-arch image for both aarch64(arm64) and x86-64(amd64). When building for Skynode using auterion-cli, it will automatically choose the aarch64 version and run all your build instructions in an aarch64 context.

If, for testing, you build the docker image to run on your local machine, it will chose the native architecture of your machine, most likely x86-64.

If you are building your app for , you must provide the --simulation flag to specify the correct simulation target architecture:

Auterion Suite
Virtual Skynode