DroneCore.OS on Stribog

Opensource packages provided by Airvolute to make development on Stribog UAVs faster and easier.

Introduction

Similar to DCS1 & 2, we provide various packages for developers, so they can seamlessly integrate their applications.

DroneCore.OS on DCS 1 & 2 (with Orin NX)chevron-right

You can see the whole application group here on GitLabGitLabarrow-up-right. Repositories are publicly available. This is a simple list of available applications:

Unified package structure

Each of aforementioned packages have similar structure, let's take a look at an example from av-stribog-cam :

This way, it is easier to orient in all of packages.

  • Docs: it is self explanatory, but each package has a simple auto-generated GitLab wiki page (examplearrow-up-right).

  • Include: header files.

  • Resources: this one is quite important. You can find key config files for the packages.

  • Src: source files.

Stribog filesystem structure

The structure is easy. You can find release folder in Stribog home folder. The name of the folder depends on the version you have. Let's assume that it's called av-release_stribog_open_source_2024-10-03_2 . The structure of the release folder if as follows:

  • install.sh -> installs all the packages and dependencies. This is there just for clarification. Stribogs come with already all things pre-installed.

  • pairing_files -> applications that are needed to do the pairing procedure.

  • src -> Source files even with build folders. This folder contains all projects form DroneCore.OS.

av-stream-selector

Stribog UAVs have multiple camera systems installed. For the users to be able to display these streams remotely, we provide av-stream-selector package. The package has two executables:

  • av_stream_selector

  • av_stream_selector_no_gst

av_stream_selector binary uses input-selectorarrow-up-right gstreamer element to select from multiple video sources and the outputs it to one selected gstreamer sink.

On the other hand av_stream_selector_no_gst leverages only the Mavlink protocol to just share information about all streams inside the UAV via the Mavlink protocol. This is typically used with GCS application. For example QGC automatically detects these Mavlink messages and creates a new menu where streams can be selected.

av_stream_selector configuration (gst version)

To use av_stream_selector with our package av-stribog-cam that launches camera streams, some configuration needs to be done in both av-stream-selector and av-stribog-cam packages. Since we are now talking about Gstreamer version, all streams need to be published on localhost address - edit av-stribog-cam config filesarrow-up-right accordingly. Look at the example for NextVision tc358743 camera chip:

For the simplification, let's assume we have OV9281 stream on port 8000. Then we can also take a look at av-stream-selector config:

Be aware, that at this time, GCS IP is 192.168.55.100 - this is the case if you are connected via the DEV usb to you computer. av-stream-selector then reacts to MAV_CMD_VIDEO_START_STREAMINGarrow-up-right message and "switches" the stream according to it.

av_stream_selector_no_gst configuration (non-gst version)

The main difference is in av-stribog-cam config. Because now we do not publish one outputting stream to the GCS. Instead we publish all streams there and we let GCS to choose from them. So we need to define IP's in each camera config, again we use NextVision config as an example:

We should alter this in each camera config that we want to use. Then av-stream-selector config should be changed accordingly. Note: we do not define output-stream element now.

av-stribog-cam

This package serves as a starting point when working with cameras. You can take a look at the code and add pipeline elements to your liking. Other than that, you can of course use the package as is. But be aware of its limitations - stream is not very optimized, so it is not suitable to be transmitted through proprietary radios (Doodle/Silvus/Microhard etc.). It runs nice via DEV USB. In case of optimization you need to add some parameters and elements to existing pipelines.

If you want to use the package as is, you can take a look at the resource config filesarrow-up-right, which are self explanatory and you can adjust them as you wish.

This package serves as a sample for developers when working with our mavlink-udp-interface lib, which is described lower at this page.

The package is simple C++ interface for Mavlink communication. It is programmed that it is efficient and modern in terms of C++ standards. This is something that was not provided by Mavlink ecosystem, so we decided to code it for you. It works best when used together with mavlink-routerarrow-up-right .

This one is used to set correct message rates as we use it in Stribog. Of course you are more than welcome to adjust it to your needs. You just edit the resource file, which can be seen herearrow-up-right.

As a part of Stribog (Airvolute) ecosystem, we provide NextVision interface to Mavlink too. This feature is not included with NextVision gimbals/cameras so we add it. When Stribogs are bought together with NextVision systems, you get the license for our nextvision library for free. Mavlink-nextvision-adapter will then work flawlessly. You can also take a look at it and use it as a template when working with Airvolute's nextvision library.

nv-gimbal-example

Only purpose of this is to show capabilities of Airvolute's NextVision library. User can control gimbal with keyboard arrows.

Last updated