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.
-
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 && 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.
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.