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/uiThe 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 comportsfrom 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