Basis

Basis is a robotics development framework developed by Basis Robotics

Getting Started   ·   Documentation   ·   Examples

Discord   ·   Blog   ·   LinkedIn

Basis Framework

Basis is a production-focused robotics development framework by Basis Robotics, built on a pub-sub architecture designed for deterministic testing. Unlike ROS and similar frameworks, Basis abstracts publishers and subscribers from the developer, using a model of Inputs + Conditions (synchronizer) -> Handler (your code) -> Outputs. You declare the messages and conditions that your code responds to, allowing the framework to automatically manage all underlying publishers, subscribers, and message routing as inputs and conditions trigger your code to process data and produce outputs.

⚠️ Basis is alpha software. While we're proud of what we've written so far, it might not be ready for production.⚠️

Basis has three main goals, in approximate order of priority:

  1. Testability: Robots and robotics code should be easy to test.
    • Unit and Integration Tests should always produce the same result (determinism!)
    • Testing the robot shouldn't require manual process management
  2. Usability: It should be easy to work with the framework and fast to develop on.
    • Users declare the behavior they want out of the framework - callbacks, conditions, messages. The framework handles the rest. Just write code!
    • The framework should never "get in your way" - if you need an advanced feature not supported with the code generator (like a transport bridge), we won't stop you from doing that (though it may not be supported for deterministic replay).
    • It's very easy to compose units together into different processes, and very easy to configure launch files and units at runtime.
  3. Performance: As the codebase grows larger, it shouldn't get slower.

Features

Future planned items

Known areas for improvement:

License

See LICENSE. In general - it is free to use if you're an indie hacker or a student. For companies - if you're just evaluating how basis works, go for it. If you'd like to use it on a production robot, please contact us!

Examples

https://github.com/basis-robotics/basis_test_robot is a living, breathing repo used by Basis (the team) for exercising the framework.