Skip to content

jalishah/airborne

Repository files navigation

ARCADE "Airborne" Software

This repository includes all software components which run on the ARCADE UAV Linux system.

Filesystem Structure

The brief file system structure summary of the airborne software looks like the following:

  • MOBICOM (MOBICOM_PATH defines top-level path)
    • common (MOBICOM common , aka "level 1 common")
      • scl: Signaling and Communication Link
      • svctrl: Service Control Utility
      • scripts: bashrc (sourced from user bashrc)
    • ARCADE (MOBICOM_PROJECT_NAME = ARCADE):
      • common (ARCADE network-level common, aka "level 2 common")
        • messages: messages formats exchanged between different ARCADE subprojects/machines
        • config: common configuration files for all subprojects
        • scripts: bashrc (sourced from upper-level bashrc)
      • airborne (MOBICOM_SUBPROJECT_NAME = airborne)
        • common (airborne common for local IPC, aka "level 3 common")
          • messages: message formats for local IPC using SCL
          • config: system.yaml, services.yaml, parameters-*.yaml
          • scripts: bashrc (sourced from upper-level bashrc)
        • components: programs connected through common above

The key motivation behind this structure is to support code-reuse and repository-tracked configuration file sharing on different levels on the software architecture. It is inspired by the Unix filesystem structure, which has fixed file locations for system, user and local binaries, includes files and libraries. Currently, we use 3 hierarchy levels (1-3) with one ever-repeating directory: "common". Within common, "scripts" is present on all three levels. "messages" and "config" can be found on level 2 and 3. The specific purpose of each level is explained as follows:

  • level 1: MOBICOM inter-project code reuse and tools (SCL, svctrl)
  • level 2: code and configurations for heterogeneous machines (UAV, Notebook, Smartphone)
  • level 3: code and configurations for multiple processes (components) on a single machine, e.g. UAV

In order to support this level concept we use another Unix concept: mounting filesystems. Within git (and github), mounting filesystems is similar to defining submodules. Currently, the "airborne" software defines the following submodules:

  • common (MOBICOM common)
  • ARCADE/common (ARCADE common)
  • ARCADE/airborne/components/interfaces/mavlink/pymavlink (third-party library)

Getting started

General information

First of all, please not that we are using CMake as a build system, configured for out-of-source build trees. Please note: CMake uses make on Linux systems and make checks file modification time, please go always sure (especially on the UAV system) that the system time is correct. Otherwise, your build might be incomplete (see clock skew)!

Installing dependencies

On Ubuntu Linux:

# MOBICOM dependencies:
$ sudo apt-get install git build-essential cmake libprotobuf-dev python-yaml protobuf-c-compiler libprotobuf-c0-dev  libzmq-dev python-zmq libyaml-dev
# ARCADE airborne dependencies:
$ sudo apt-get install libtinyxml-dev graphviz  openjdk-7-jre-headless libcv-dev libglib2.0-dev libmeschach-dev

Building the software

  1. Clone the repo to your machine, make sure to call it MOBICOM (the actual project name will be a directory inside the repo)

    1.a. If you want a read-only clone, type:

    git clone git://github.com/ARCADE-UAV/airborne.git MOBICOM
    

    1.b. If you want a developer clone, type:

    git clone git:@github.com:ARCADE-UAV/airborne.git MOBICOM
    
  2. Change into the new directory and initialize the submodules (i.e. the common part of MOBICOM)

    cd MOBICOM
    ./gitsub_init.sh
    
  3. Copy the content of example.bashrc into your local bashrc and edit it if required, reinstalize your environment

    cat example.bashrc >> ~/.bashrc
    nano ~/.bashrc
    bash
    
  4. Now, create a new build directory and build the source

    mkdir build && cd build
    

    4.a. If you are just compiling it on a regular PC for testing:

    cmake .. && make
    

    4.b If you are compiling on the UAV's ARM Cortex A8 system-on-chip:

    cmake -DCMAKE_TOOLCHAIN_FILE=../toolchains/cortex_a8.cmake .. && make
    

About

Airborne Software Package

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published