Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BlueOS-1.1] Update for stable release candidate #100

Merged
Binary file modified advanced-usage/available-services.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/bag-editor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/dashboard-pirate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/dashboard-simple.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/ethernet.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/extensions-installed-example.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/extensions-installed-pirate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/extensions-installed-simple.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/extensions-store-example.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/extensions-store.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/file-browser.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/firmware-pirate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/firmware-serial.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/firmware-simple.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
452 changes: 290 additions & 162 deletions advanced-usage/index.md

Large diffs are not rendered by default.

Binary file modified advanced-usage/interface-overview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/log-browser.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/mavlink-endpoints.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/mavlink-inspector.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/network-test.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/nmea-injector.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/parameters.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/ping-sonar-devices.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/serial-bridges.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/sidebar-pirate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/sidebar-simple.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified advanced-usage/system-info-about.png
Binary file modified advanced-usage/system-info-firmware.png
Binary file modified advanced-usage/system-info-kernel.png
Binary file modified advanced-usage/system-info-monitor.png
Binary file modified advanced-usage/system-info-network.png
Binary file modified advanced-usage/system-info-processes.png
Binary file modified advanced-usage/terminal.png
Binary file added advanced-usage/theme-logo.png
Binary file added advanced-usage/theme-name-mdns.png
Binary file added advanced-usage/theme-style.png
Binary file added advanced-usage/theme-vehicle.png
Binary file added advanced-usage/usb-otg.png
Binary file added advanced-usage/vehicle-setup-configure.png
Binary file added advanced-usage/vehicle-setup-overview.png
Binary file added advanced-usage/vehicle-setup-pwm-outputs.png
Binary file removed advanced-usage/vehicle-setup.png
Diff not rendered.
Binary file modified advanced-usage/version-chooser-pirate.png
Binary file modified advanced-usage/version-chooser-simple.png
Binary file modified advanced-usage/video-pirate.png
Binary file modified advanced-usage/video-simple.png
Binary file added advanced-usage/widgets.png
15 changes: 7 additions & 8 deletions development/bootstrap/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,18 +21,18 @@ For an update the current core image gets shut down and the newly installed imag

## Codebase

[BlueOS-bootstrap](https://github.com/bluerobotics/BlueOS-docker/tree/master/bootstrap) is open source, and lives within the broader [BlueOS-docker](https://github.com/bluerobotics/BlueOS-docker) GitHub repository. [Issues](https://github.com/bluerobotics/BlueOS-docker/issues) can be used to report bugs or suggest features, and [Pull Requests](https://github.com/bluerobotics/BlueOS-docker/pulls) fixing bugs or adding new features are welcomed.
[BlueOS-bootstrap](https://github.com/bluerobotics/BlueOS/tree/master/bootstrap) is open source, and lives within the broader [BlueOS](https://github.com/bluerobotics/BlueOS) GitHub repository. [Issues](https://github.com/bluerobotics/BlueOS/issues) can be used to report bugs or suggest features, and [Pull Requests](https://github.com/bluerobotics/BlueOS/pulls) fixing bugs or adding new features are welcomed.

BlueOS-docker is set up with a [GitHub Action](https://docs.github.com/en/actions) that [automatically builds and deploys](https://github.com/bluerobotics/BlueOS-docker/blob/master/.github/workflows/test-and-deploy.yml#L90) a BlueOS-bootstrap image when changes are pushed to the GitHub repository.
BlueOS is set up with a [GitHub Action](https://docs.github.com/en/actions) that [automatically builds and deploys](https://github.com/bluerobotics/BlueOS/blob/master/.github/workflows/test-and-deploy.yml#L90) a BlueOS-bootstrap image when changes are pushed to the GitHub repository.
If you want to make use of that functionality you'll need a [DockerHub](https://hub.docker.com) account, and will need to specify your DockerHub username (`DOCKER_USERNAME`) and password (`DOCKER_PASSWORD`) in your fork's [GitHub secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets).

## Updating

It is [not yet possible to (nicely) update bootstrap through the BlueOS interface](https://github.com/bluerobotics/BlueOS-docker/issues/1510). The [BlueOS Version](../../advanced-usage#blueos-version) chooser only updates the [BlueOS-core](../core) image.
It is [not yet possible to (nicely) update bootstrap through the BlueOS interface](https://github.com/bluerobotics/BlueOS/issues/1510). The [BlueOS Version](../../advanced-usage#blueos-version) chooser only updates the [BlueOS-core](../core) image.

BlueOS-bootstrap versions are built at the same time as BlueOS-core versions, and they get bundled together in the Raspberry Pi images that can be flashed onto an SD card to install BlueOS onto it. Updating BlueOS-bootstrap without flashing an SD card is currently only possible through the [Terminal](../../advanced-usage#terminal):

```shell
```sh
# drop down from blueos-core into the underlying operating system:
red-pill
# get the running bootstrap container id
Expand All @@ -45,8 +45,8 @@ docker container rm $CURRENT_BOOTSTRAP_CONTAINER
# specify the Docker image source (use your account if testing a change)
BOOTSTRAP_REPO=bluerobotics
BOOTSTRAP_IMAGE=blueos-bootstrap
# specify the new version to use (e.g. 1.1.0-beta.22, or master)
NEW_BOOTSTRAP_VERSION=1.1.0-beta.22
# specify the new version to use (e.g. 1.1.0-beta.23, or master)
NEW_BOOTSTRAP_VERSION=1.1.0-beta.23
# start running the new version
# (will automatically download if it's not already available locally)
docker run \
Expand All @@ -58,8 +58,7 @@ docker run \
-v /var/run/docker.sock:/var/run/docker.sock \
-e BLUEOS_CONFIG_PATH=/root/.config/blueos \
$BOOTSTRAP_REPO/$BOOTSTRAP_IMAGE:$NEW_BOOTSTRAP_VERSION
# view the logs, to check that it's repeatedly printing
# "core is already running, waiting for it to stop..."
# view the logs, to check for any error or progress messages
docker logs -f $BOOTSTRAP_IMAGE
# press ctrl+c to return to the terminal, and you're done
# if you want, type 'exit' or 'logout' to return to the BlueOS-core container
Expand Down
64 changes: 51 additions & 13 deletions development/core/index.md

Large diffs are not rendered by default.

11 changes: 6 additions & 5 deletions development/extensions/index.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
+++
title = "Extensions (Alpha)"
title = "Extensions (Beta)"
description = "BlueOS extensions documentation."
date = 2023-03-08T12:30:00+11:00
template = "docs/page.html"
Expand Down Expand Up @@ -29,7 +29,7 @@ For some additional context and discussion, please see [this forum thread](https
## Implementation

{% warning() %}
The BlueOS Extensions system is currently still in an `alpha` stage of development, so significant implementation changes are expected in the near future.
The BlueOS Extensions system is currently still in a `beta` stage of development, so some implementation changes are expected in the near future.
{% end %}

### Components: Anatomy of an Extension
Expand All @@ -43,7 +43,7 @@ Once installed, an Extension Package can be run as a [Docker Container](../overv
The process of packaging a set of programs and files into a Docker Image requires a [Dockerfile](https://docs.docker.com/engine/reference/builder/), which can be thought of as recipe for building the Image.

For an Extension to be properly managed and shareable, the Dockerfile it's created from should include relevant metadata[^2] via the following labels:
- `LABEL permisions='{}'`
- `LABEL permissions='{}'`
- This can be used to set resource limits, including allowing access to specific components of the underlying hardware
- This must be a valid JSON (use \ to break lines), which follows the configuration described in the [Docker Api](https://docs.docker.com/engine/api/v1.41/#tag/Container/operation/ContainerCreate)
- For reference, existing permissions can be retrieved from a running Docker Container by running the command `docker inspect <container_name>`
Expand Down Expand Up @@ -201,11 +201,12 @@ As an example:
}
```

Each registered Extension service will have an entry under the "Extensions" section of the BlueOS web interface sidebar menu:
Each Extension service with a `register_service` endpoint will have an entry under the "Extensions" section of the BlueOS web interface sidebar menu:

![sidebar display showing a registered service in the menu](registered-service.png)

[^3]:You can choose to not provide a web interface if your extension operates with no user input. The [VirtualHere Extension](https://github.com/Williangalvani/blueos-virtualhere) is a relevant example.

[^4]:You can use programs like [simple-http-server](https://github.com/TheWaWaR/simple-http-server) to serve static files for an Extension.

#### Functionality
Expand Down Expand Up @@ -283,5 +284,5 @@ Once installed on the [Onboard Computer](@/hardware/required/onboard-computer/in
Walkthrough coming soon!
{% end %}

- [Sneak peek diagram](https://github.com/bluerobotics/ardusub-zola/blob/BlueOS-1.1/extensions/development-process.mermaid)
- [Sneak peek diagram](https://github.com/bluerobotics/ardusub-zola/blob/BlueOS-1.1/development/extensions/development-process.mermaid)

Binary file added getting-started/allow-rndis.png
47 changes: 45 additions & 2 deletions getting-started/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,33 @@ The web interface monitors the autopilot and other main software components. It

### Interface Access

By default you can access BlueOS via the old IP address ([192.168.2.2](http://192.168.2.2/)) or via [blueos.local](http://blueos.local/).
When BlueOS is connected to the same wifi network as your device you can also connect with it using [blueos-wifi.local](http://blueos-wifi.local/).
- By default you can access BlueOS via [blueos.local](http://blueos.local/)
- This applies if the BlueOS device is connected to via a direct ethernet connection, or [USB-OTG](#usb-otg)
- On an ethernet connection you can also access BlueOS via its static IP address ([192.168.2.2](http://192.168.2.2/))
- When BlueOS is connected to the same wifi network as your device you can also connect with it using [blueos-wifi.local](http://blueos-wifi.local/)
- By default if BlueOS does not have a wifi connection configured within 5 minutes of booting, it will start its own wifi hotspot which, when connected to, allows accessing the BlueOS interface via [blueos-hotspot.local](http://blueos-hotspot.local/)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if these 5 minutes is true. Is this from your tests? From code, I think it's 30 seconds, but it could be that with the time that it takes for BlueOS to boot, it adds 30 seconds on top of the other 4:30 minutes.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IIRC I saw it written somewhere, but I don't remember where. I haven't tested.


### Wizard

When BlueOS is newly installed the interface provides a configuration wizard to help get things set up.

The Welcome section allows skipping the wizard if BlueOS and your vehicle have already been configured as desired:
{{ easy_image(src="wizard-welcome", width=450, center=true) }}

To support BlueOS and autopilot firmware updates, it is recommended for BlueOS to be connected to the internet:
{{ easy_image(src="wizard-wifi", width=450, center=true) }}

BlueOS supports multiple vehicle types, and allows selecting a quick-setup option for the most common ones:
{{ easy_image(src="wizard-vehicle", width=450, center=true) }}

Vehicle quick-setup involves setting appropriate parameters for the selected vehicle type and frame, as well as choosing a name for your vehicle, and changing the mDNS hostname if you would prefer to connect with something other than [http://blueos.local](http://blueos.local):
{{ easy_image(src="wizard-parameters", width=450, center=true) }}

Progress is displayed for any selected configuration changes, and an up to date autopilot firmware is downloaded and installed (if using a standard vehicle type):
{{ easy_image(src="wizard-progress", width=450, center=true) }}

A completion window is shown once all configuration is done:
{{ easy_image(src="wizard-complete", width=450, center=true) }}

### Interface Features

Expand Down Expand Up @@ -72,6 +97,7 @@ Now that your BlueOS has an internet connection, you can perform the update to t
1. If you're already on the latest version, the right side of your Local Version will be blank. If not, you should see a blue **Update** button.

<img src="../advanced-usage/version-chooser-simple.png" width="550">

1. Once the update button is clicked the update process will run.
Please wait until it finishes - it will automatically reload the webpage for you.

Expand All @@ -80,3 +106,20 @@ Now that your BlueOS has an internet connection, you can perform the update to t
BlueOS is capable of configuring and streaming multiple cameras simultaneously. The first time it boots, it will automatically detect any connected H264-capable cameras and start streaming them. If not, make sure your camera is properly connected, and that BlueOS is on the latest available version. Reset settings and restart BlueOS if necessary.

Additional information is available in the Advanced Usage [Video Streams](../advanced-usage/#video-streams) section.

## USB OTG
It is possible to connect with a Raspberry Pi 4 through its USB-C port[^1]. Once it's connected, the interface should be available though [blueos.local](http://blueos.local)[^2].

[^1]:A Raspberry Pi draws more power than many computer USB ports can provide, so a USB-C connection should generally only be used for data transfer, with a separate [power supply](@/hardware/required/power-supply/index.md) (or through a powered USB hub).

[^2]:The `usb0` network interface is configured to use a DHCP server at `192.168.3.1` by default, which does **not** provide access via the [192.168.2.2](http://192.168.2.2) static IP address.

### Mac configuration
If you are using MacOS, make sure to allow the RNDIS/ethernet gadget:
{{ easy_image(src="allow-rndis", width="300") }}

MacOS will consider a USB-OTG connection as a valid source of internet, which can be avoided by reordering your network interfaces, making sure that wifi and your actual wired internet connection interface are used with higher priority.

{{ easy_image(src="network-settings", width="600") }}

{{ easy_image(src="network-service-order", width="400") }}
Binary file added getting-started/network-service-order.png
Binary file added getting-started/network-settings.png
Binary file added getting-started/wizard-complete.png
Binary file added getting-started/wizard-parameters.png
Binary file added getting-started/wizard-progress.png
Binary file added getting-started/wizard-vehicle.png
Binary file added getting-started/wizard-welcome.png
Binary file added getting-started/wizard-wifi.png
41 changes: 29 additions & 12 deletions overview/index.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
+++
title = "Overview"
description = "BlueOS overview."
date = 2023-02-16T16:05:00+11:00
date = 2023-06-19T22:00:00+11:00
template = "docs/page.html"
sort_by = "weight"
weight = 0
Expand All @@ -16,11 +16,11 @@ top = false

## A bit of context...

The [original Companion](https://www.ardusub.com/reference/companion-web-ui.html) 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.
The [original Companion Software](https://www.ardusub.com/reference/companion-web-ui.html) 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.

There are many upcoming features, including support for [third party packages](https://discuss.bluerobotics.com/t/external-integrations-extensions/10912), 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! 😄
We're super excited about our future with BlueOS, and we can't wait for you to join us and try it out! 😄

## BlueOS principles and goals

Expand Down Expand Up @@ -50,6 +50,7 @@ This covers a summary of the major changes and new features in BlueOS-1.1. Where
### Page improvements
- [Vehicle Setup](../advanced-usage/#vehicle-setup) `(NEW!)`
- A page providing an overview of the configured vehicle and its connected peripherals
- Allows testing motors, configuring servo outputs, and setting default autopilot parameters
- [Ping Sonar Devices](../advanced-usage/#ping-sonar-devices) `(NEW!)`
- A page to detect connected Ping family devices (including Ping360s connected via an ethernet switch)
- Adds MAVLink toggle for Ping Sonar devices
Expand All @@ -59,41 +60,57 @@ This covers a summary of the major changes and new features in BlueOS-1.1. Where
- [Autopilot Parameters](../advanced-usage/#autopilot-parameters) `(NEW!)`
- Allows reading and editing parameters from a connected MAVLink autopilot
- Includes saving to and loading from a file
- [Autopilot Firmware](../advanced-usage/#autopilot-firmware) (MERGED Firmware and General)
- [Autopilot Firmware](../advanced-usage/#autopilot-firmware) (MERGED "Firmware" and "General")
- Extra information about the currently running firmware was added
- Improved firmware update robustness
- Serial autopilots in bootloader mode can now be detected and flashed
- Allows recovering from failed Pixhawk updates
- Can now choose which autopilot to flash, if multiple are connected
- [Video Streams](../advanced-usage/#video-streams)
- [Video Streams](../advanced-usage/#video-streams) (REPLACES "Video")
- Camera manager now supports Raspberry Pi cameras, and a fake source for testing
- Camera previews are now available when a stream is configured
- RTSP support added for MJPG and YUYV encoded streams
- RTSP output support added for MJPG and YUYV encoded streams
- MAVLink support improved
- Allows Control Station Software (e.g. QGroundControl) to configure camera settings and switch between multiple video streams
- [MAVLink Endpoints](../advanced-usage/#mavlink-endpoints)
- [MAVLink Endpoints](../advanced-usage/#mavlink-endpoints) (REPLACES "Endpoints")
- IP address interface now indicates the endpoint type
- Endpoints are now editable
- [Serial Bridges](../advanced-usage/#serial-bridges)
- [Serial Bridges](../advanced-usage/#serial-bridges) (REPLACES "Bridges")
- Significant interface and robustness updates
- [NMEA Injector](../advanced-usage/#nmea-injector)
- Settings are now persistent across boots
- [Version Chooser](../advanced-usage/#version-chooser)
- [BlueOS Version](../advanced-usage/#blueos-version) (REPLACES "Version Chooser")
- New progress bar while downloading and extracting new images
- [System Information](../advanced-usage/#system-information)
- New "Firmware" tab, with information about the computer's firmware and bootloader
- [Network Test](../advanced-usage/#network-test)
- New graph to track upload and download performance during a test
- [File Browser](../advanced-usage/#file-browser)
- New shortcuts to useful parts of the file-system
- [Bag Editor](../advanced-usage/#bag-editor) `(NEW!)`
- Allows modifying the database that controls frontend interface changes


### Menu and general interface improvements
- Sidebar is now open by default when the window is wide enough
- Interface updated to be mobile friendly
- New vehicle selection and setup wizard
- New header widgets
- Interface updated to be mobile friendly, and more aesthetic
- Various sidebar improvements
- Now open by default when the window is wide enough
- Pages are now ordered alphabetically, without ambiguous sections
- There's now a configurable vehicle icon, name, mDNS address, and logo
- It's now possible to download the latest BlueOS system logs, and reset settings
- Pirate mode is now toggled via the happy-robot/pirate icon in the header
- Ethernet and wifi configuration are improved
- A hotspot network is now created for devices to connect to if a normal connection does not occur on boot
- Raspberry Pi 4s can now connect via USB OTG ethernet

### Device Support
### Device/Hardware Support
- Added basic detection and management support for:
- the Cube Orange flight controller
- the Pixhawk 6X flight controller
- non-Navigator Linux boards
- New amd64 Docker images, for running BlueOS on development machines

## Feature Comparison

Expand Down