The original Companion 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 have been 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.
There are many upcoming features, including support for third party packages, applications, advanced data logging, and much more! We're super excited about our future with BlueOS, and we can't wait for you to join us and try it out! 😄
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.
BlueOS has most of the features from the old Companion, and some hotly-requested new ones too!
Feature | Companion | BlueOS | Both |
---|---|---|---|
Hardware | Raspberry Pi 3B required | Raspberry Pi 3B / 3B+ / 4B supported; Other Linux-based SBCs images to come; You can install from scratch using the installation script in any Linux computer. (Modifications may be necessary for your hardware configuration) | |
WIFI manager | Connect to a single network | Connect to and manage multiple networks, like a cellphone or computer WIFI manager | Visible and hidden networks supported |
Ethernet manager | Single DHCP or static network | Multiple static IPs and DHCP configuration | DHCP client or server |
Camera manager | Select a single camera to stream over UDP Supports Raspberry Pi cameras (except HQ Camera) Supports a single audio stream over UDP | Easily manage multiple streams UDP, RTSP and support coming soon for WebRTC (#1000) Raspberry Pi cameras not yet supported (#991) Audio streaming not yet supported (#990) | H264-encoded streams only |
NMEA support | - | - | Conveys GPS positions to the vehicle |
Ping Sonar Devices | Ping Sonar distance estimates can be sent via MAVLink | Devices can be hot-plugged MAVLink pipeline not yet supported (#264) | Ping Sonar and Ping360 can connect with Ping Viewer |
ArduPilot Firmware | ArduSub-only downloads | General ArduPilot downloads; select vehicle to update | stable , beta , and devel releases, custom uploads, and restore default parameters |
Endpoints | - | - | Create and manage UDP, TCP, and serial MAVLink endpoints |
Bridges | - | - | Create and manage bridges between serial and UDP endpoints |
File Browser | - | Edit files from the browser | Download and upload files |
Log manager | Ssh/terminal only | Download and manage logs from the browser | |
Log Viewer | - | Visualise and analyse logs from the browser | |
Web Terminal | Access Linux terminal from the browser | Access Linux terminal with a tmux session from the browser | Web terminal client |
Version Chooser | Update to latest stable only | Easily update/downgrade between versions, including locally stored; Includes stable, beta, and master releases*; Available even if main site failing | |
System information | Basic usage statistics, list of connected devices | Provides all the necessary information about the hardware, operating system, running processes, CPU, memory, disk, network usage and status | |
Notification system | - | Notifications about issues, new releases, and the status of your system. | |
Network test | - | Check real time latency | Check upload and download speed from the surface computer to the vehicle |
MAVLink inspector | See latest MAVLink messages via MAVLink2REST | see and inspect MAVLink messages in real time from the browser | MAVLink2REST is available |
Water Linked | Supports UGPS and DVL-A50 | DVL-A50 package available; UGPS not yet supported |
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 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.