BlueOS-core is the body of BlueOS, and runs all of the built in services, along with the main web interface. It contains the key components for running, configuring, and operating a robotic vehicle, as well as a variety of convenience features to aid with system introspection and development.
BlueOS-core is open source, and lives within the broader BlueOS GitHub repository. Issues can be used to report bugs or suggest features, and Pull Requests fixing bugs or adding new features are welcomed.
BlueOS is set up with a GitHub Action that automatically builds and deploys a BlueOS-core image when changes are pushed to the GitHub repository.
If you want to make use of that functionality you'll need a DockerHub account, and will need to specify your DockerHub username (DOCKER_USERNAME
) and password (DOCKER_PASSWORD
) in your fork's GitHub secrets.
The BlueOS Version chooser can be used to install a custom image by either
.tar
compressed BlueOS-core
Docker image.dockerignore
file) for building the BlueOS-core Docker image**/install-*.sh
scripts that the Dockerfile uses to install the tools, libraries, and servicesBLUEOS_DISABLE_SERVICES
environment variable (New in 1.2)
(New in 1.3)
BLUEOS_DISABLE_MEMORY_LIMIT
environment variabletools
/public
: browser tab icons and the like/src
:
/assets
: styling, images, and models used throughout the web interfaceBlueOS provides automatic detection of Available Services, whereby any HTTP server with a title tag is found and listed. This is particularly helpful for testing out API calls, both for development and debugging purposes.
Documentation can also be parsed if
/docs
or /v1.0/ui
The services built into BlueOS are as follows:
Adding USB detection support for a new type of flight controller board is reasonably straightforward, but does require a few different steps:
python3
command)from serial.tools.list_ports import comports
from pprint import pprint
[pprint(port.__dict__) for port in comports()]
"product"
and "manufacturer"
values for your flight controller boardNon-USB serial connections are not yet supported.
APJ_BOARD_ID
variable in the hwdef.dat
or hwdef.inc
filemaster
, and create a new branch (e.g. add-pixhawk-6C
)core/services/ardupilot_manager/typedefs.py
and add your board's name and type to the Platform
class
PlatformType.Serial
for USB/serial connections - Linux
is reserved for sensor/peripheral expansion boards that run the autopilot firmware directly on the Onboard Computercore/services/ardupilot_manager/flight_controller_detector/board_identification.py
and add appropriate SerialBoardIdentifier
instances to the identifiers
list (using the "product" and "manufacturer" values from earlier)
core/services/ardupilot_manager/firmware/FirmwareInstall.py
and add your board to the get_board_id
function (using the APJ_BOARD_ID
value from earlier)git commit
and git push
back up to your GitHub fork of the repositoryBlueOS-core-docker-arm-v7
artifact from it