Kompass
Kompass is an event-driven navigation stack designed with an easy-to-use Python API. It implements blazzingly fast, GPU powered, versions of the most cutting edge algorithms for all parts of the navigation stack.
Install / Use
/learn @automatika-robotics/KompassREADME
Part of the EMOS ecosystem
High-Performance, Event-Driven Navigation Stack for ROS2
EMOS Documentation | Developer Docs | Discord
</div>What is Kompass?
Kompass is the navigation layer of EMOS (Embodied Operating System) and a framework for building robust, event-driven navigation stacks for autonomous mobile robots. It is built to be customizable, extendable and hardware-agnostic.
Kompass includes highly optimized, GPU-powered navigation algorithms in C++ that make full use of available hardware resources. It supports multi-process parallelism on CPUs and highly parallelized execution on any GPU (Nvidia, AMD, etc.) without vendor lock-in. And most importantly, Kompass makes it straightforward to create and deploy sophisticated navigation capabilities for any mobile robot within a single Python script, without sacrificing performance or flexibility.
For full documentation, tutorials, and recipes, visit emos.automatikarobotics.com.
- Key Features
- Components
- Installation
- Benchmarking Results
- Dynamic Web UI
- Robot Plugins
- EMOS Ecosystem
Key Features
-
Adaptive Event-Driven Design: Responsive to real-world events, robot state changes, and task updates. Define event-action pairs to reconfigure the navigation stack at runtime, or seamlessly switch planning or control strategies based on environment context.
-
Engineered for Speed: All core algorithms are written in modern C++ (kompass-core). First navigation framework to explicitly support GPU-based execution via GPGPU, unlocking high performance on any hardware without vendor lock-in.
-
ML Models as First-Class Citizens: External events can be driven by ML model outputs interpreting sensor data or user commands. The entire stack becomes reconfigurable based on ML inference, going beyond well-established visual navigation scenarios.
-
Pythonic API with Native Speed: While the heavy lifting is done in optimized C++, Kompass provides an intuitive Python API. Prototype quickly and deploy high-performance systems without rewriting code.
Components
Kompass is divided into several interacting components, each responsible for a navigation subtask:
<div align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="docs/_static/images/diagrams/system_components_dark.png"> <source media="(prefers-color-scheme: light)" srcset="docs/_static/images/diagrams/system_components_light.png"> <img alt="Kompass Components" src="docs/_static/images/diagrams/system_components_dark.png" width="100%"> </picture> </div>Each component runs as a ROS 2 lifecycle node and communicates using topics, services, or action servers:
<div align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="docs/_static/images/diagrams/system_graph_dark.png"> <source media="(prefers-color-scheme: light)" srcset="docs/_static/images/diagrams/system_graph_light.png"> <img alt="System Diagram" src="docs/_static/images/diagrams/system_graph_dark.png" width="100%"> </picture> </div>Learn more about each component in the EMOS Documentation: Planner | Controller | Local Mapper | Map Server | Drive Manager | Motion Server
Installation
For detailed installation instructions, see the EMOS Documentation.
Install kompass-core
With GPU support (recommended):
curl -sSL https://raw.githubusercontent.com/automatika-robotics/kompass-core/refs/heads/main/build_dependencies/install_gpu.sh | bash
With pip (CPU only):
sudo apt-get install -y libompl-dev libfcl-dev libpcl-dev && pip install kompass-core
Install Kompass
Quick install (Ubuntu/Debian, ROS 2 Humble+ or Jazzy+):
sudo apt install ros-$ROS_DISTRO-kompass
From source (for contributors):
mkdir -p kompass_ws/src && cd kompass_ws/src
git clone https://github.com/automatika-robotics/sugarcoat
git clone https://github.com/automatika-robotics/kompass
rosdep update && rosdep install -y --from-paths . --ignore-src
cd .. && colcon build
Benchmarking Results
The plots below compare CPU vs. GPU performance across navigation components. See the benchmarking details for methodology.
Logarithmic Scale (CPU vs GPU)
<div align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/automatika-robotics/kompass-core/main/docs/benchmark_log_dark.png"> <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/automatika-robotics/kompass-core/main/docs/benchmark_log_light.png"> <img alt="Logarithmic Benchmark Results" src="https://raw.githubusercontent.com/automatika-robotics/kompass-core/main/docs/benchmark_log_light.png" width="60%"> </picture> </div>Power Consumption & Efficiency
Efficiency = Operations per Joule (Throughput / Watts). Higher is better.
<div align="center"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/automatika-robotics/kompass-core/main/docs/benchmark_power_dark.png"> <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/automatika-robotics/kompass-core/main/docs/benchmark_power_light.png"> <img alt="Power Benchmark Results" src="https://raw.githubusercontent.com/automatika-robotics/kompass-core/main/docs/benchmark_power_light.png" width="60%"> </picture> </div>Dynamic Web UI
Every Kompass recipe generates a fully dynamic Web UI automatically. Built with FastHTML on the underlying Sugarcoat framework, it provides instant control and visualization without writing frontend code.
<div align="center"> <picture> <img alt="Kompass UI" src="./docs/_static/gif/ui_navigation.gif" width="60%"> </picture> </div>Robot Plugins
Write portable automation recipes that run on any robot without code changes. Robot Plugins act as a translation layer between your application and robot-specific ROS 2 interfaces.
Part of the EMOS Ecosystem
Kompass is one of three core open-source components in EMOS (Embodied Operating System) the unified orchestration layer for Physical AI:
- EmbodiedAgents: Intelligence and manipulation. ML model graphs with semantic memory and adaptive reconfiguration.
- Kompass: Navigation. GPU-accelerated planning and control.
- Sugarcoat: Robust & Event-driven system design for ROS 2.
Write a recipe once. Deploy it on any robot. No code changes.
Resources
- EMOS Documentation: Tutorials, recipes, and usage guides
- Developer Docs: Extending, custom components, API reference
- Discord: Community and support
Copyright & Contributions
Kompass is a collaboration between Automatika Robotics and Inria.
The code is available under the MIT License. See LICENSE for details. Copyright (c) 2024 Automatika Robotics unless explicitly indicated otherwise.
