BlueOS is a modular, robust, and efficient platform for managing a vehicle or robot from its onboard computer. It is the evolution of the Companion project, which aimed to route a vehicle's video stream and communications to its control station computer. Recognizing the need for a more sophisticated and scalable system, BlueOS was created from the ground up, embracing modularity to ensure portability, robust updating, and extensibility.
- Official documentation
- Development documentation
- Contributions
- Code of Conduct
- Registered Extensions
- Install directory (for custom installations)
The development of BlueOS is driven by the following core principles:
- An interface that is simple by default but powerful when needed - the user has the power to change anything they desire and customize the full experience
- Designed to focus on what matters, improving user access to information and controls with a human-friendly UI and UX
- Make complex tasks simpler and improve ease of use by reusing design patterns from other applications (based on the material UI guidelines)
- Advanced error handling and detection, making any problems clear to the user and developers, along with how to fix them
- Simplify development, providing full access to our services API and modular development model
- Portable and flexible, you should be able to run on a Raspberry Pi 3/4 or any SBC with Linux operating system, contributions are welcomed
- Highly functional with low CPU usage, the entire system is built to run efficiently
- Developed on solid foundations, critical parts or intensive workforce services are designed using the most advanced languages and features available for stability
The design, organization, and future releases of BlueOS are aligned with these principles, striving to provide an optimized and enriched user experience.
BlueOS is available in three release types:
- Stable: Officially tested and validated versions with long-term support. Recommended for most users.
- Beta: Lightly tested rolling releases with new features, bug fixes, and improvements.
- Master: Bleeding-edge development releases with almost daily changes. These are the very latest features that may not have been tested yet.
BlueOS has been designed with a focus on vehicle and platform agnosticism. Our aim is to facilitate broad compatibility across a wide spectrum of applications. Currently, BlueOS officially supports the following vehicle types:
ArduRover is an open-source, uncrewed boat platform. Whether you are commanding a leisure boat or a research vessel, BlueOS's compatibility with ArduRover ensures that you can navigate the waters smoothly 🌊.
BlueBoat is supported by default.
ArduSub is the go-to control system for remotely operated underwater vehicles (ROVs) 🐟. BlueOS offers seamless integration with ArduSub, enabling efficient management and operation of underwater vehicles.
BlueROV2 is supported out of the box.
BlueOS provides generic support for a wide variety of terrestrial, aerial, and marine uncrewed vehicles that use ArduPilot and PX4 autopilots. This extends the range of vehicles that can be managed using our system, from drones to autonomous cars and more.
Note: Specific vehicle configuration may be necessary to ensure optimal performance with BlueOS.
BlueOS is designed to perform optimally across a wide range of systems. Our latest releases are automatically built for the following architectures:
-
armv7: This is a common architecture for embedded devices. Covers Raspberry Pi models up to and including the Raspberry Pi 3.
-
armv8/arm64: This is used by more recent, high-performance devices. You can run BlueOS on a Raspberry Pi 4, or in a computer with Apple Silicon.
-
amd64: This is the architecture used by most desktop and laptop computers. A typical example is any modern PC running a 64-bit version of Linux. Not fully supported.
Right now we officially support the Raspberry Pi 3 and 4, but the system should "just work" on all listed architectures with the correct docker binds.
Docker based development environment is available for via the core/compose/compose.yml
docker compose file. This will start a development environment with all the required services as well as mount all of the needed directories in this repository for development.
docker compose pull # Ensure that docker is up-to-date
docker compose -f core/compose/compose.yml up
When restarting the development environment you may need to remove the volumes to ensure that the development environment is clean.
docker compose -f core/compose/compose.yml down