Skip to content

Commit

Permalink
content: add 1.2
Browse files Browse the repository at this point in the history
  • Loading branch information
ES-Alexander committed Sep 30, 2024
1 parent 4c3f69e commit e339eb0
Show file tree
Hide file tree
Showing 19 changed files with 205 additions and 125 deletions.
1 change: 1 addition & 0 deletions content/development/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@ template = "docs/section.html"
sort_by = "weight"
weight = 40
draft = false
aliases = ['/software/onboard/BlueOS-latest/development', '/blueos/latest/development']
+++
4 changes: 2 additions & 2 deletions content/development/bootstrap/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ If you want to make use of that functionality you'll need a [DockerHub](https://
BlueOS-bootstrap is a critical component of running BlueOS, and can significantly affect the system stability. It should only be updated when necessary, and preferably at times where the onboard computer hardware is accessible in case something goes wrong. For normal users it is strongly recommended to only update BlueOS-bootstrap to match stable releases of BlueOS, and even then only if there is a known issue an update is expected to fix or improve.
{% end %}

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. For official BlueOS releases it is possible to update the BlueOS-bootstrap image to match the BlueOS release through the [BlueOS Version](../../advanced-usage#blueos-version) chooser, and is the recommended process.
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. For official BlueOS releases it is possible to update the BlueOS-bootstrap image to match the BlueOS release through the [BlueOS Version](../../usage/advanced/#blueos-version) chooser, and is the recommended process.

Manually updating to a non-matched and/or custom bootstrap image requires using the [Terminal](../../advanced-usage#terminal):
Manually updating to a non-matched and/or custom bootstrap image requires using the [Terminal](../../usage/advanced/#terminal):

```sh
# drop down from blueos-core into the underlying operating system:
Expand Down
9 changes: 5 additions & 4 deletions content/development/core/index.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
+++
title = "BlueOS-core"
description = "BlueOS-core development documentation."
date = 2023-06-01T19:30:00+11:00
date = 2024-04-10T01:30:00+10:00
template = "docs/page.html"
sort_by = "weight"
weight = 30
Expand Down Expand Up @@ -36,6 +36,7 @@ The [BlueOS Version](../../usage/advanced/#blueos-version) chooser can be used t
1. [configuration](https://github.com/bluerobotics/BlueOS/tree/master/core/configuration) files that the Dockerfile moves to appropriate locations for the programs they apply to
1. [start-blueos-core](https://github.com/bluerobotics/BlueOS/tree/master/core/start-blueos-core) script that runs when the BlueOS-core container gets started
- Responsible for configuring and starting the services
- Supports disabling a comma-separated list of core services via the `BLUEOS_DISABLE_SERVICES` environment variable `(New in 1.2)`
1. [libs](https://github.com/bluerobotics/BlueOS/tree/master/core/libs) code libraries of shared functionality available to the service backends
1. [services code](https://github.com/bluerobotics/BlueOS/tree/master/core/services) for running [the services](#services)
- Mostly Python backend code, often wrapped around / making use of a program installed by `tools`
Expand All @@ -48,7 +49,7 @@ The [BlueOS Version](../../usage/advanced/#blueos-version) chooser can be used t

### Services

BlueOS provides automatic detection of [Available Services](../../usage/advanced#available-services),
BlueOS provides automatic detection of [Available Services](../../usage/advanced/#available-services),
whereby any HTTP server with a [title tag](https://www.w3schools.com/tags/tag_title.asp) is found and listed.
This is particularly helpful for testing out API calls, both for development and debugging purposes.

Expand All @@ -72,7 +73,7 @@ The services built into BlueOS are as follows:
| File Browser | Provides a graphical interface to the file system. | - [File Browser](../../usage/advanced/#file-browser) | - [tools/filebrowser](https://github.com/bluerobotics/BlueOS/tree/master/core/tools/filebrowser) | - [views/FileBrowserView](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/views/FileBrowserView.vue)<br> - [types/filebrowser.ts](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/types/filebrowser.ts) |
| [helper](https://github.com/bluerobotics/BlueOS/tree/master/core/services/helper) | Lists available webpages | - Sidebar | -- | - [types/helper.ts](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/types/helper.ts) |
| [Kraken](https://github.com/bluerobotics/BlueOS/tree/master/core/services/kraken) | Manages extensions and the extension store. | - [Extensions Manager](../../usage/advanced/#extensions-manager) | -- | - [views/ExtensionView.vue](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/views/ExtensionView.vue)<br>- [views/ExtensionManagerView.vue](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/views/ExtensionManagerView.vue)<br> - [components/kraken](https://github.com/bluerobotics/BlueOS/tree/master/core/frontend/src/components/kraken)<br> - [types/kraken.ts](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/types/kraken.ts) |
| [log_zipper](https://github.com/bluerobotics/BlueOS/tree/master/core/services/log_zipper) | Zips old log files to reduce space usage. | -- | -- | -- |
| [log_zipper](https://github.com/bluerobotics/BlueOS/tree/master/core/services/log_zipper) | GZips old log files to reduce space usage, and deletes them if space runs out. | -- | -- | -- |
| Log Browser | Allows browsing, downloading, and viewing autopilot log files. | - [Log Browser](../../usage/advanced/#log-browser) | - [tools/logviewer](https://github.com/bluerobotics/BlueOS/tree/master/core/tools/logviewer) | - [views/LogView.vue](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/views/LogView.vue)<br> - [components/logs](https://github.com/bluerobotics/BlueOS/tree/master/core/frontend/src/components/logs) |
| MAVLink Camera Manager | Manages camera and video stream pipelines, and presents them over MAVLink. | - [Video Streams](../../usage/advanced/#video-streams) | - [tools/ mavlink_camera_manager](https://github.com/bluerobotics/BlueOS/tree/master/core/tools/mavlink_camera_manager) | - [views/VideoManagerView.vue](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/views/VideoManagerView.vue)<br> - [components/video-manager](https://github.com/bluerobotics/BlueOS/tree/master/core/frontend/src/components/video-manager)<br> - [store/video.ts](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/store/video.ts)<br> - [types/video.ts](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/types/video.ts) |
| MAVLink2Rest | A REST-based interface to the MAVLink network | - [MAVLink Inspector](../../usage/advanced/#mavlink-inspector)<br> - [Autopilot Parameters](../../usage/advanced/#autopilot-parameters)<br> - [Vehicle Setup](../../usage/advanced/#vehicle-setup) | - [tools/mavlink2rest](https://github.com/bluerobotics/BlueOS/tree/master/core/tools/mavlink2rest) | - [views/MavlinkInspectorView.vue](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/views/MavlinkInspectorView.vue)<br> - [components/mavlink](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/components/mavlink/)<br> - [components/mavlink-inspector](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/components/mavlink-inspector)<br> - [store/mavlink.ts](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/store/mavlink.ts)<br> - [types/mavlink.ts](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/types/mavlink.ts)<br> - [views/ParameterEditorView.vue](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/views/ParameterEditorView.vue)<br> - [components/parameter-editor](https://github.com/bluerobotics/BlueOS/tree/master/core/frontend/src/components/parameter-editor)<br> - [types/parameter_repository.d.ts](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/types/parameter_repository.d.ts)<br> - [views/VehicleSetupView.vue](https://github.com/bluerobotics/BlueOS/blob/master/core/frontend/src/views/VehicleSetupView.vue)<br> - [components/vehiclesetup](https://github.com/bluerobotics/BlueOS/tree/master/core/frontend/src/components/vehiclesetup) |
Expand All @@ -93,7 +94,7 @@ Adding USB detection support for a new type of [flight controller board](@/integ
#### Find the USB device information

1. Connect your flight controller board via USB[^2] to a computer running BlueOS
1. Go to the BlueOS [Terminal](../../usage/advanced#terminal) page
1. Go to the BlueOS [Terminal](../../usage/advanced/#terminal) page
1. Open a Python console (run the `python3` command)
1. Run `from serial.tools.list_ports import comports`
1. Run `from pprint import pprint`
Expand Down
21 changes: 10 additions & 11 deletions content/development/extensions/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ template = "docs/page.html"
sort_by = "weight"
weight = 40
draft = false
aliases = ['software/onboard/BlueOS-1.1/extensions']

[extra]
lead = ''
Expand All @@ -15,14 +14,14 @@ top = false
+++

{% note() %}
This page provides context and development guidance for Extensions. For _installing_ and _using_ Extensions please refer to the [Extensions Manager](../../advanced-usage/#extensions-manager) section of the Advanced Usage page.
This page provides context and development guidance for Extensions. For _installing_ and _using_ Extensions please refer to the [Extensions Manager](../../usage/advanced/#extensions-manager) section of the Advanced Usage page.
{% end %}

## Context

One of the primary aims of BlueOS is to be a platform that is readily extendable to the needs of each user. For maximum utility it should be easy to add support for custom hardware, add components to the user interface, and share developments with other BlueOS users, without compromising the base BlueOS experience.

Accordingly, BlueOS has been designed with a containerised architecture, so the core functionality is kept separate from Extensions, and each can be distributed and updated independently of the other. The built in Extension system allows developers and users to find and install add-on software packages to BlueOS, and manage updates, permissions, and resource limits of those Extensions through the [Extensions Manager](../../advanced-usage/#extensions-manager).
Accordingly, BlueOS has been designed with a containerised architecture, so the core functionality is kept separate from Extensions, and each can be distributed and updated independently of the other. The built in Extension system allows developers and users to find and install add-on software packages to BlueOS, and manage updates, permissions, and resource limits of those Extensions through the [Extensions Manager](../../usage/advanced/#extensions-manager).

## Implementation

Expand All @@ -37,7 +36,7 @@ The BlueOS Extensions system consists of three major components:
- Anyone can [see which Extensions are available](https://docs.bluerobotics.com/BlueOS-Extensions-Repository/), so (for example):
- Device manufacturers can show that their hardware is supported on BlueOS vehicles
- Users looking for hardware functionalities can find relevant device manufacturers
1. The [**Extensions Manager**](../../advanced-usage/#extensions-manager), a BlueOS-core service that's in charge of fetching Extension Packages from the Bazaar, as well as running active Extensions, and monitoring and limiting their resource usage and hardware access
1. The [**Extensions Manager**](../../usage/advanced/#extensions-manager), a BlueOS-core service that's in charge of fetching Extension Packages from the Bazaar, as well as running active Extensions, and monitoring and limiting their resource usage and hardware access

{% note() %}
In future there will also be [support for **file-based Plugins**](https://github.com/bluerobotics/BlueOS/issues/1939), which will extend the functionality of a running Docker Container (e.g. themes or 3D models for BlueOS-core, or extra components and/or documentation for a particular Extension). These will also be shareable and installable through the Bazaar.
Expand Down Expand Up @@ -71,7 +70,7 @@ A common usage process would follow:
8. Repeat from step 4. until further interaction is no longer required

##### Backend Services
- Communicate with each other services (via [APIs](../../advanced-usage/#available-services))
- Communicate with each other services (via [APIs](../../usage/advanced/#available-services))
- Typically run continuously while the vehicle is on
- Have access to the vehicle computer hardware, including connected devices and the filesystem
- May have internet access, if the vehicle computer does
Expand Down Expand Up @@ -334,7 +333,7 @@ Different types of Extensions have different functionality, and there are often
1. The fetched information is then compiled and published to the [Manifest file](https://github.com/bluerobotics/BlueOS-Extensions-Repository/gh-pages/manifest.json) in the `gh-pages` branch

#### Installed Extensions
Once installed on the [Onboard Computer](@/integrations/hardware/required/onboard-computer/index.md), Extensions are stored at `/var/lib/docker` in the file-system, but should be managed through the BlueOS [Extensions Manager](../../advanced-usage/#extensions-manager).
Once installed on the [Onboard Computer](@/integrations/hardware/required/onboard-computer/index.md), Extensions are stored at `/var/lib/docker` in the file-system, but should be managed through the BlueOS [Extensions Manager](../../usage/advanced/#extensions-manager).


### Ecosystem Attributes
Expand Down Expand Up @@ -380,7 +379,7 @@ Once installed on the [Onboard Computer](@/integrations/hardware/required/onboar

If you're starting your Extension from scratch, there are a variety of development tools available within BlueOS and in existing Extensions which can enable implementing and testing your key functionality before you start to package it up for easy installation and sharing. Having the backend functionality tested before trying to package it into an Extension can help to minimise unexpected issues and troubleshooting.

Basic functionality can be tested from within the core BlueOS Docker container using the provided [Terminal](../../advanced-usage/#terminal), and if you store files that you create in the `/usr/blueos/userdata/` directory they will be persistent across BlueOS restarts, and accessible through the [File Browser](../../advanced-usage/#file-browser). For a more interactive development experience, you may wish to use an Extension like [Jupyter](https://docs.bluerobotics.com/BlueOS-Extensions-Repository/#:~:text=Jupyter,-Maintainer) or [VS Code](https://docs.bluerobotics.com/BlueOS-Extensions-Repository/#:~:text=OpenVSCoder,-Maintainer).
Basic functionality can be tested from within the core BlueOS Docker container using the provided [Terminal](../../usage/advanced/#terminal), and if you store files that you create in the `/usr/blueos/userdata/` directory they will be persistent across BlueOS restarts, and accessible through the [File Browser](../../usage/advanced/#file-browser). For a more interactive development experience, you may wish to use an Extension like [Jupyter](https://docs.bluerobotics.com/BlueOS-Extensions-Repository/#:~:text=Jupyter,-Maintainer) or [VS Code](https://docs.bluerobotics.com/BlueOS-Extensions-Repository/#:~:text=OpenVSCoder,-Maintainer).

#### Extension Creation and Docker Image Upload

Expand Down Expand Up @@ -443,7 +442,7 @@ For reference:

Testing each Extension release before making it available to install from the online store is strongly recommended.

1. Go to the [Extensions Manager](../../advanced-usage/#extensions-manager) in BlueOS
1. Go to the [Extensions Manager](../../usage/advanced/#extensions-manager) in BlueOS
1. Click on the "Installed" tab
1. Click the "+" icon in the bottom right corner
1. Enter the relevant information for your Docker Image, so it can be fetched from Docker Hub
Expand All @@ -464,7 +463,7 @@ Testing each Extension release before making it available to install from the on
<!--
##### Accessing an Installed Extension's Docker Container
It is possible to enter running Docker containers via the [Terminal](../../advanced-usage/#terminal), by
It is possible to enter running Docker containers via the [Terminal](../../usage/advanced/#terminal), by
1. Running `red-pill` to exit the BlueOS-core container
1. Running `docker container ls` to list the currently running Docker containers
Expand All @@ -487,7 +486,7 @@ not recommended to upload commit-modified images as new Extension versions, beca
{% note() %}
If you want to make changes to files that are mounted to the computer's filesystem (via `binds` in the `permissions` metadata LABEL) then that can instead
be done via the [File Browser](../../advanced-usage/#file-browser), restarting the Extension afterwards if necessary. In that case the changes will be
be done via the [File Browser](../../usage/advanced/#file-browser), restarting the Extension afterwards if necessary. In that case the changes will be
persistent once the modified file has been saved.
{% end %}
Expand All @@ -511,7 +510,7 @@ persistent once the modified file has been saved.

#### Installing from the Bazaar

The Bazaar is available through the BlueOS [Extensions Manager](../../advanced-usage/#extensions-manager). Once an Extension has been accepted into the Bazaar it should appear automatically, within a few minutes.
The Bazaar is available through the BlueOS [Extensions Manager](../../usage/advanced/#extensions-manager). Once an Extension has been accepted into the Bazaar it should appear automatically, within a few minutes.

#### Iterating / Release Cycle

Expand Down
6 changes: 3 additions & 3 deletions content/development/overview/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ To understand how BlueOS is developed, it's valuable to understand what it's mad
- Web interfaces and APIs
- Core interface provides consistency, control, and displays active services
- Services display links to API documentation → simplifies development
- [Extensions Manager](../../advanced-usage#extensions-manager) makes it easy to find, install, and manage services from others
- [Extensions Manager](../../usage/advanced/#extensions-manager) makes it easy to find, install, and manage services from others
- Includes a web store, where Extensions can be downloaded from
- Frontend (Vue.js, Typescript)
- Allows for very reactive components (see heartbeats icon)
Expand All @@ -65,11 +65,11 @@ A Docker Container generally acts like an isolated mini operating system, but it

### Core

[BlueOS-core](../core) is the body of BlueOS, and runs all of the built in [services](../../advanced-usage#available-services), along with the main web interface.
[BlueOS-core](../core) is the body of BlueOS, and runs all of the built in [services](../../usage/advanced/#available-services), along with the main web interface.

### Extensions

BlueOS has support for [Extensions](../extensions), which are handled by the [Extensions Manager](../../advanced-usage#extensions-manager) service in core.
BlueOS has support for [Extensions](../extensions), which are handled by the [Extensions Manager](../../usage/advanced/#extensions-manager) service in core.

Extensions are individual Docker images that run independently of BlueOS, but can hook into the core systems and host system, providing access to additional devices and data streams, as well as modifying / adding to the web interface.

Expand Down
28 changes: 28 additions & 0 deletions content/integrations/decision-process/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
+++
title = "Decision Process"
description = "How to decide what kind of integration is most appropriate."
date = 2024-05-09T17:00:00+11:00
sort_by = "weight"
weight = 0
template = "docs/page.html"
draft = false
aliases = ['/blueos/latest/integrations/decision-process']

[extra]
toc = true
top = false
+++
## Options

- BlueOS core
- BlueOS Extension
- Independent
- Internal (Jupyter, Node-RED, etc)
- Add-on (Cockpit widget, etc)
- Autopilot
- Firmware driver
- Lua script

## Diagram

{{ mermaid(path="overview.mermaid", width="220%", curve="monotoneY") }}
Loading

0 comments on commit e339eb0

Please sign in to comment.