The original Companion Software project (started in 2015) was originally created with the simple intent to route an underwater vehicle's video stream and communications to the surface computer, and provide some basic configuration of those features and the vehicle firmware. The simple scope was great to get things started, but also meant that new and complex features weren't designed in from the start, so maintenance and developing functionality became increasingly challenging.
With lessons learned on useful features and software architecture requirements, BlueOS was designed and created from the ground up to fit the requirements of the onboard computer system we want to have - with room to grow into a true operating system for the vehicle. BlueOS is modular to the heart, which makes it portable, robust to update, and extensible.
We're super excited about our future with BlueOS, and we can't wait for you to join us and try it out! 😄
BlueOS is designed to integrate nicely with connected parts of the hardware and software stack involved in running and operating a vehicle.
In general, BlueOS (and its extensions) run on an onboard computer, and help an underlying autopilot (on a flight controller board) to communicate with an operator (via a control station computer), while also interfacing with and passing on data from sensors that do not provide direct measurements of the vehicle's control state.
Here is a visual overview of common components in a BlueOS-related software stack:
As the core development team we've tried to envision the future of the onboard computer, and the features that will require. Our initial ideas have been distilled into the following core concepts, many of which are already built in to the BlueOS of today:
Some of these principles will only be evident in future releases, but the underlying software architecture and organization have been designed from the ground up to support and enable them.
This covers a summary of the major changes and new features in BlueOS-1.4. Where applicable relevant features are also included in the feature comparison table. For detailed coverage of every change, please see the full release notes.
register_service
specification to better support cross-communication between extensions, and remote access of extension interfacesBlueOS has almost all features from the old Companion, and several hotly-requested new ones too!
Feature | BlueOS 1.4 | BlueOS 1.3 | BlueOS 1.2 | BlueOS 1.1 | BlueOS 1.0 | Companion |
---|---|---|---|---|---|---|
Onboard Computer | → | → + Raspberry Pi CM4 | → | → + Other Linux-based SBCs images to come | + Raspberry Pi 3B / 3B+ / 4B supported + You can install from scratch using the installation script in any Linux computer. (Modifications may be necessary for your hardware configuration) | Raspberry Pi 3B required |
Flight Controller | → + 64-bit Navigator | → | → | → + Cube Orange + Pixhawk 6X | → + Navigator + Pixhawk 4 | Pixhawk |
Video Streams | → + H265 support | → + RTSP variants | → | → + MPEG and YUYV encodings + Supports Raspberry Pi cameras | + Easily manage multiple streams + UDP and RTSP outputs - Audio streaming not yet supported (#990) | Select a single camera to stream over UDP + Supports Raspberry Pi cameras (except HQ Camera) + Supports a single audio stream over UDP |
WIFI Manager | → | → + External adapter support | → | → + Vehicle provides local hotspot | → + Connect to and manage multiple networks, like a cellphone or computer WIFI manager | Connect to a single network + Visible and hidden networks supported |
Ethernet Manager | → | → | → | → | Multiple static IPs and DHCP configuration | Single DHCP (client or server) or static network |
Notification system | → | → | → | → | Notifications about issues, new releases, and the status of your system. | - |
File Browser | → | → | → + Folder for extension data and configuration files | → | → + Edit files from the browser | Download and upload files |
Log Browser | → | → | → | → | Download and manage logs from the browser + Visualise and analyse logs from the built in viewer | Ssh/terminal only |
MAVLink inspector | → | → | → | → + MAVLink2REST "watcher" option for individual message types | See and inspect MAVLink messages in real time from the browser | See latest MAVLink messages via MAVLink2REST |
Network test | → + Live usage widget | → | → | → + Graph during speed tests | → + Check real time latency | Check upload and download speed from the Control Station Computer to the vehicle's Onboard Computer |
System information | → | → | → | → | Provides all the necessary information about the hardware, operating system, running processes, CPU, memory, disk, network usage and status | Basic usage statistics, list of connected devices |
Web Terminal | → | → | → + Support for non- pi users | → | → + Uses a tmux session | Access Linux terminal from the browser |
Autopilot Firmware | → | → | → | → | → + General ArduPilot downloads; + select vehicle to update | stable , beta , and devel releases, custom uploads, and restore default parameters;ArduSub-only downloads |
Autopilot Parameters | → + Custom description overrides | → + Intuitive ArduPilot calibrations and configuration + PX4 parameter descriptions | → | View, search, and edit ArduPilot vehicle parameters | - | - |
Version Chooser | → | → | → | → + Bootstrap updates | + Easily update/downgrade between BlueOS versions, including locally stored + Includes stable, beta, and master releases* + Available even if main site failing | Update Companion to latest stable only |
MAVLink Endpoints | → + MAVLink Server routing + Log all endpoints + Detailed debug interface | → + Log messages in .tlog files | → + Choose routing service | → | → | Create and manage UDP, TCP, and serial MAVLink endpoints |
NMEA support | → | → | → | → | → | Conveys GPS positions to the vehicle |
Ping Sonar Devices | → | → | → | → + Detects Ping360 in ethernet configuration + Ping Sonar distance estimates can be sent via MAVLink | → + Devices can be hot-plugged - No MAVLink pipeline | Ping Sonar and Ping360 can connect with Ping Viewer + Ping Sonar distance estimates can be sent via MAVLink |
Serial Bridges | → | → + Separate target and listener ports | → | → | → | Create and manage bridges between serial and UDP/TCP endpoints |
Water Linked | → | → + UGPS and DVL fusion | → | DVL-A50 and UGPS extensions available through Extensions Manager | DVL-A50 package available | Supports UGPS and DVL-A50 |
Extensions | → + Improved interface parameters | → | → | Custom extensions available through Extensions Manager | → | Custom functionality requires forking the codebase |
BlueOS has multiple release types, to allow choosing your preferred balance between access to the latest fixes and improvements, and stability of the software. The three release types are:
When BlueOS is connected to the internet, a notification appears if a newer version of the same release or a stabler type is available. E.g: When using a Stable version, only new Stable versions will trigger a notification. If using a Beta release, newer Beta and Stable releases will trigger a notification. When running Master, any release type newer than the active one will trigger a new update notification. This helps to ensure that any updates will be as or more stable than your current version, unless you intentionally change to a less stable release type.
It's worth noting that the Version Chooser in general offers several major robustness and versatility improvements over the previous 'latest update only' approach, which should benefit both users and developers.