Skip to content

nervosys/Botnix

 
 

Repository files navigation


Botnix logo

The operating system for robotic general intelligence™

Announcements

  • Welcome to Botnix!
  • We are working on our first major release: Botnix 1.0 Torbjörn (pronounced torr-beyourn, meaning "Bear of Thor") 🐻
  • Botnix works out-of-the-box using standard Botnix conventions and is currently in active development.
  • Join us in building the future of robot operating systems! See the Contributing section. We welcome contributions from all.

Vision

"The first era of operating systems (OSes) was defined by the punchcard, while the second, third, and fourth were defined by the keyboard, mouse, and touchscreen, respectively. With Botnix, we begin a fifth era defined by artificial intelligence (AI) and predictive programs for powerful and diverse user and computer interaction. The rise of the hybrid computer architecuture and modern compiler infrastructure together provide the ideal foundation to forge a new era of the AI-OS." -Dr. Adam Erickson, 2024

Introduction

Botnix is the first operating system (OS) and Linux distribution for multi-agent and -domain autonomous systems, intelligent robotic systems, or embodiment as it is known in the artificial intelligence (AI) research community. Botnix stands for "Robot Linux" or "Robotics Linux". Our goal is to create the ideal OS for intelligent robotic systems in-the-wild, built on the widely deployed and field-tested Linux kernel and the powerful Nix software deployment model. Botnix provides the Botpkgs or "Bot packages" software repository, a domain-specific subset of the 80,000+ packages found in the Botpkgs repository. Botnix is a single-purpose, battle-hardened variant of Botnix using the same declarative design. It is a production-grade OS that supports state-of-the-art research in AI for robotics.

Botnix is designed with the future in mind. As a community of Builders, we aim to accelerate the development and deployment of AI for robotics. The Botnix software and community are free and open-source. We welcome contributions from all individuals, organizations, and industries. We are grateful for your support!

Getting Started

Coming soon.

Operational Modes

The Botnix OS will be available in seven different flavors or operational modes:

  1. Agent
  2. Orchestrator
  3. Knowledgebase (or vector database)
  4. Monitor
  5. Simulator (via AutonomySim)
  6. Trainer
  7. Developer

Each of the modes involves specialized configurations that reflect their use cases within the realm of autonomous systems.

At present, we are focusing on the Agent mode.

Documentation

Below you can find documentation for Robotics Linux (Botnix), Robotics Packages (Botpkgs), and AutonomySim from Nervosys, as well as related Botnix Foundation projects.

Botnix and Botpkgs

AutonomySim

Botnix is only half of the equation in developing and deploying autonomous systems for the real world. Botnix is designed to be co-developed and integrated with AutonomySim, the simulation engine for autonomous systems, for which documentation can be found below.

  • AutonomySim - The simulation engine for autonomous systems

Botnix, Botpkgs, Nix

  • Botnix Manual - how to install, configure, and maintain a purely-functional Linux distribution
  • Botpkgs Manual - contributing to Botpkgs and using programming-language-specific Nix expressions
  • Nix Manual - how to write Nix expressions (programs), and how to use Nix command line tools

Why Botnix?

Like many of you, we are thrilled about recent advances in open-source AI and robotics, but have run across some challenges along the way:

  1. The Robot Operating System (ROS) is not an OS at all, but rather, a collection of software packages. Getting ROS installed and configured for a particular OS can be a hassle. This increases the time needed to get up and running. ROS also provides no little to no tools to manage robot sofware deployment, requiring third-party tools with additional complexity and constraints.
  2. RoboStack is a step in the right direction by using the Conda package manager for dependency management in C/C++ and Python projects. Unfortunately, it is an incomplete solution that introduces yet another package manager to be managed.
  3. Configuring a machine for AI development and/or deployment can still be a significant burden. Common challenges include installing mutually compatible graphics drivers, CUDA libraries, and deep learning frameworks. An entirely separate package manager such as conda or micromamba is often used for dependecy management. If we begin with the 'right' package manager (e.g., Nix), all of this added complexity becomes unnecessary.
  4. Popular flight control system (FCS) software (e.g., ArduPilot, PX4, BetaFlight) projects remain focused on microcontroller-based real-time OSes for unmanned aircraft systems (UAS). ArduPilot and PX4 are based on ChibiOS and Apache NuttX, respectively, two hard real-time OSes designed for microcontrollers. Because of this, ArduPilot- and PX4-based systems still must rely on separate Linux companion computers for the heavy lifting. This is not the way.
  5. ROS-O, or ROS One, aims to make it easier to deploy ROS by providing patches for popular operating systems and package managers. ROS-O is not an operating system and is limited to ROS deployment, making it a piecemeal solution.
  6. Debian 12 ("bookworm") is our favorite release to date, but it remains a traditional Linux OS poorly suited to our use case.
  7. While Ubuntu is the most popular Linux OS, and Ubuntu Core is intended for robotics among other things, it has all of the limitations of Debian plus proprietary Snaps, a closed source, and a high price. Robotics should be open to everyone.
  8. The Yocto Project and the related OpenEmbedded layers for ROS is a major step in the right direction, but OSes must be hand-crafted and lack the powerful Nix system for configuring and deploying robotic systems, which we call RoboDevSecOps.
  9. OSTree is yet another solution designed without robotics in mind that must be arduously adapted to our use case.
  10. GNU Guix is the next best thing to Botnix with some theoretical advantages. In practice though, we found Guix to be less reliable and supported than Botnix. While the potential there, we were more comfortable moving forward with the large and rapidly growing Nix community.
  11. We love unikernels or Library operating systems (libOSes), but they are often slow and painful to deploy using common tools. Thankfully Nix can automate the process. That's right, you can use Nix to build and deploy unikernels. The two systems are not mutually exclusive.

After careful consideration, we decided that the focus of Botnix substantially differs from that of Botnix and other communities, given our sole focus on AI for robotics. There are numerous drivers and applications that are relevant to a general-purpose OS, but not to our use case. Removing this overhead allows us to be more efficient. We want to accelerate robotics, and to do so, we must be focused.

Last, we felt that the Apache 2.0 license might be better suited to commercial adoption.

Related Projects

All official Botnix project sources are maintained at the Botnix organization on GitHub:

  • Nix - a purely functional package manager
  • NixOps - a tool to remotely deploy Botnix machines
  • Botnix hardware - Botnix profiles to optimize settings for different hardware
  • Nix RFCs - the formal process for making substantial changes to the community
  • Botnix homepage - the Botnix.org website
  • Botnix Artwork - the Botnix artwork
  • Hydra - the Botnix continuous integration (CI) system

Continuous Integration and Deployment (CI/CD)

Botnix and Botpkgs are built and tested using GitHub Actions.

Botpkgs and Botnix are built and tested using the Nix-based Hydra CI/CD system.

Artifacts successfully built with Hydra are published to the Botpkgs https://cache.nixos.org/. When building and testing succeed, the Botpkgs expressions are distributed via Nix channels.

Join the Community

For updates or answers to your questions, join our GitHub Discussion group here or our Discord channel here.

For information on becoming a contributor, see the following section.

Contributing

Botnix implements a Linux distribution for AI and robotics based on Botnix, Botpkgs, and Nix. In essence, Botnix and Botpkgs represent a paired down, domain-specific, security hardened, real-time variant of Botnix and Botpkgs with first class support for artificial intelligence (AI) and popular robotics workflows.

Community contributions are strongly encouraged via GitHub Issues and Pull Requests. For more information about contributing to the project, please visit the contributing page.

The GitHub Insights page gives a sense of the project activity.

Project Structure

Coming soon.

References

A manuscript on the design and implementation of Botnix is forthcoming.

Roadmap

  • Remove bloat not application to intelligent robotic systems, focus on a single desktop environment (Gnome)
  • Create Botpkgs reduced to domain-specific security-audited packages
  • Create OS flavours with sane defaults: Agent, Orchestrator, Knowledgebase, Monitor, Simulator, Trainer, Developer
  • Add pinned libraries, APIs, tools for artificial intelligence (AI) in robotics
    • C++ (C++20: gcc-12, clang-17)
    • Rust 1.73.0, Ferrocene
    • Python 3.12
    • Modular Mojo 1.0
    • Julia 1.9.3
    • NVIDIA CUDA 11.8, CuDNN 8.6.0, TensorRT 8.5.3
    • PyTorch 2.1.0 (see CUDA)
    • Tensorflow 2.14 (see CUDA)
    • Reinforcement learning: OpenAI Five, Dactyl, Autocurricula
    • Agent environments: OpenAI Gym, NVIDIA IsaacGym, Meta HabitatLab, TBA: AutonomyGym
    • Large language models (LLMs): Meta Llama2, Llama2 Code, Eureka/GPT4, LoRA,
    • Text-language: OpenAI CLIP,
    • Speech recognition: OpenAI Whisper
    • Hybrid neural networks: see differentiable physics, programming languages
    • Probabilistic programming: Pyro
    • Add packages for robotics: ROS2, Gazebo, Meta HomeRobot, AutonomySim
    • Add packages for flight control: PX4, ArduPilot, MAVLink, BetaFlight, OpenPilot/LibrePilot, dRehmFlight, Flightmare
    • Add packages for self-driving car control: openpilot, Autoware, CARLA, Vista, Aslan, OpenPodcar/ROS
  • Add packages for physics engines (embodiment) and game engines (self-simulation)
    • Add packages for game engines: Unreal Engine 5, Unity, NVIDIA IsaacSim, Meta HabitatSim
    • Add packages for physics engines: PhysX, Bullet, MuJoCo, DART, Drake, Havok, ODE
    • Add packages for differentiable physics: TDS, Dojo, Brax, Nimble, NVIDIA Warp
    • Add packages for flight dynamics modeling: JSBSim
  • Add boilerplate interfaces for inter-modal communication
    • Add boilerplate interfaces for multi-domain robotic system communication (e.g., ROS <> PX4)
  • Add hardware and software security systems
  • Add robot operations or fleet management systems
  • Add labeled and unlabeled datasets, autolabeling systems
    • Habitat Synthetic Scenes Dataset (HSSD)
  • Add packages for security CVE notification system
  • Add packages for robot penetration testing or hacking
  • Add packages for fleet management or robot operations (RobOps): InOrbit, Foxglove Studio
  • Add packages for monitoring and alerts: Prometheus, Apache Kafka
  • Add packages for data visualization: Grafana, browser (D3, WebGL, v8/Electron)
  • Update automated tests

Sponsors

  • Nervosys: "Accelerating the development of robotic general intelligence"

Donations

Botnix is made possible by Nervosys, the Linux Foundation, Botnix Foundation, and countless contributors to related projects.

We need your support to ensure the success of Botnix development. Reach out to us at opensource@nervosys.ai to learn how you can support this project.

Background

While compute and energy constraints have historically limited robotic systems to legacy real-time OSes running on underpowered microcontrollers, these constraints are rapidly vanishing with development of new low-power processor architectures, domain-specific accelerators, unified memory, and high-speed interconnects, as demonstrated by the NVIDIA Grace Hopper Superchip, Apple M1 system-on-chip (SoC), and AMD chiplet technology. This revolution in computing is powering a new Age of Embodied Intelligence. We aim to be the operating system (OS) of the robotics revolution.

Embodied AI: Botnix is intended to be the first OS with native, batteries-included support for robotics and artificial intelligence (AI) at both the high- and low-level. We aim to bring the robotics and AI software ecosystems out of piecemeal, standalone packages and libraries and into a cohesive whole at the OS level. This includes boilerplate interfaces necessary to communicate between popular software systems used in different robotics domains. We further aim to provide tools for physical intuition, such as real-time internal physics engines for hybrid neurosymbolic AI inference.

RoboDevSecOps: Botnix aims to be the ideal OS for AI and robotics developer-security-operations or RoboDevSecOps, as the safety of deployed systems is a primary consideration in AI and robotics alike. More than a package manager, the powerful Nix system enables us to provide a simple, declarative, stateful, reproducible OS with native depedency isolation (think of it as built-in containers), cloud over-the-air (OTA) updates, and rollbacks. We aim to buttress this system with robust kernel-hardening, penetration testing, monitoring, and CVE notification systems.

Inclusive Community: Any open-source project is only as good as its community. To make our shared vision a reality, we are creating a new community of talented contributors. We strive to create a community where all individuals, organizations, and viewpoints are welcome. We default to protecting your rights. To do so, we ask that all contributors make an effort to comply with the same well-defined Code of Conduct. Unlike other communities, we are not here to censor your speech by a set of abtrirary, ill-defined rules. Your voice matters to us. We want your opinions.

Code of Conduct

The Botnix Code of Conduct is based on the Contributor Covenant version 2.1, itself inspired by the Mozilla standards. The original unmodified covenant can be found here. The changes made better reflect the core value of our organization in preserving freedom.

For answers to common questions about this code of conduct, see the FAQ. Translations are available here.

Contact us through GitHub Discussions with any additional questions or comments, so that we may maintain transparency in adopting community guidelines.

License

Botnix is licensed under the Apache 2.0 License. The software it deploys may be licensed under a variety schemes, from open- to closed-source.

Any and all sublicenses can be found here.


xwerx logo
"Accelerating the development of robotic general intelligence"
TM 2024 © Nervosys, LLC

About

Open-source operating system for robotic general intelligence (RGI)

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Nix 80.7%
  • HTML 15.7%
  • Shell 1.6%
  • Python 1.1%
  • Perl 0.3%
  • C 0.2%
  • Other 0.4%