Part of the EMOS ecosystem
High-Performance, Event-Driven Navigation Stack for ROS2
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
-
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.
Kompass is divided into several interacting components, each responsible for a navigation subtask:
Each component runs as a ROS 2 lifecycle node and communicates using topics, services, or action servers:
Learn more about each component in the EMOS Documentation: Planner | Controller | Local Mapper | Map Server | Drive Manager | Motion Server
For detailed installation instructions, see the EMOS Documentation.
With GPU support (recommended):
curl -sSL https://raw.githubusercontent.com/automatika-robotics/kompass-core/refs/heads/main/build_dependencies/install_gpu.sh | bashWith pip (CPU only):
sudo apt-get install -y libompl-dev libfcl-dev libpcl-dev && pip install kompass-coreQuick install (Ubuntu/Debian, ROS 2 Humble+ or Jazzy+):
sudo apt install ros-$ROS_DISTRO-kompassFrom 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 buildThe plots below compare CPU vs. GPU performance across navigation components. See the benchmarking details for methodology.
Efficiency = Operations per Joule (Throughput / Watts). Higher is better.
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.
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.
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.
- EMOS Documentation: Tutorials, recipes, and usage guides
- Developer Docs: Extending, custom components, API reference
- Discord: Community and support
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.