The operating systems, software, firmware and protocols in use on our products are predominantly open source. Most of our hardware design is also open. We hope and expect that our use of open source systems will help you and us in the following ways:
- Support repairs and customization;
- Provide information security and peace of mind;
- Encourage the development of new software, features, and capabilities;
- Subject our systems to robust review.
In this article we discuss a few of the major open source systems on our products, and in general terms what we have done to customize our installation and make our systems work better.
Flight Controller, PX4
The flight controller on the Spiri Mu is our derivation of open source PX4 firmware. Our alterations to the base stack allow SLAM and GPS (plus similar satellite networks) to work together on position estimation, and extend MAVLINK support to more input/output channels on the board. MAVLINK is an open protocol for communicating navigational messages. We also provide documentation on the default settings, our recommended base operational settings, and scripts to help you further customize settings for your missions.
Main Operating System, Ubuntu 16.04
Our products generally run on Ubuntu Linux 16.04 ("xenial"). On Spiri Mu, the main computer is a TX2 by Nvidia, which runs a quad-core central processing unit on arm64 architecture plus a graphics processing unit consisting of 256 Pascal CUDA cores. The kernel of the system is a highly customized derivative of L4T (Linux for Tegra) to optimize performance on our graphics-heavy architecture, and also to work with the hardware we connect to the main computer. This includes the cameras, the carrier board and its input/output ports, and the interface to the flight control board. We have also chosen to pare down to a minimum the packages installed with Ubuntu, and to organize the file system so that ROS packages requiring CUDA optimization are installed together with it.
Robot Operating System (ROS)
Spiri products come with ROS installed, currently ROS Kinetic. At its core, ROS is a communications system that allows software systems running simultaneously on a robot or among robots to share information with each other on demand. On Spiri Mu, for example, image frames from the cameras are published as ROS "topics" and these topics are used by the navigation system as well as the video recording system, both of which subscribe to the image topics relevant to them. Multiple Spiris in a flock use ROS topics to share their position information amongst themselves so they can keep formation without any outside control.
Our installation of ROS is highly customized to make sure that our CUDA-enabled version of OpenCV is the only one ROS uses, and to set up properly the autonomous navigation, machine vision, deep learning and inference packages that Spiri requires. We provide instructions on how to add ROS packages to Spiri Mu and our other products.
Flocking System, Buzz
Buzz and its ROS package, ROSBuzz, are open source programs designed to enable fully autonomous robot ensembles to cooperate and coordinate. It comes pre-installed on the Spiri Host machine and the Spiri Mu.
Vision System, OpenCV
OpenCV3 is an open source computer vision suite in widespread use. We have customized its compilation, installation and configuration to take advantage of the parallel processing power of our CUDA cores.