Repository Summary
| Description | |
| Checkout URI | https://github.com/automatika-robotics/kompass.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| kompass | 0.8.0 |
| kompass_interfaces | 0.8.0 |
README
**GPU-accelerated, event-driven navigation for the real world** [](LICENSE) [](https://emos.automatikarobotics.com/getting-started/installation.html) [](https://discord.gg/B9ZU6qjzND) [**Documentation**](https://emos.automatikarobotics.com) · [**Developer Docs**](https://automatika-robotics.github.io/kompass/) · [**Discord**](https://discord.gg/B9ZU6qjzND)
One system - Four configurable navigation modes.
Kompass is the navigation layer of EMOS, the Embodied Operating System. An event-driven navigation system, made for robots working in the real world.
Real environments don’t hold still. People walk into the path, sensors drop out, plans go stale, and a stack that is fixed at launch will soon fail. Kompass adapts at runtime. It swaps controllers, tightens safety limits, or reconfigures itself, all on the fly, with no relaunch needed.
Under the hood, every component runs on optimized C++ that executes on CPU or any GPU.
Forget rigid behavior trees. In Kompass, any complex behavior for your robot is a single Python script, a Recipe: wire events to actions across the whole stack and describe how your robot should react, in a few readable lines.
Components
| Area | Components |
|---|---|
| Planning | Planner finds a path around the known map with OMPL, re-planning until the robot arrives, and records a route driven by hand so it can be played back later. MissionManager runs a list of waypoints in order, holding at each one for a set time or until a condition is met. |
| Control | Controller turns a route into the velocities this robot can make, steering around what moves: DWA, Stanley, Pure Pursuit and DVZ for path tracking, RGB and RGB-D followers for keeping a target in view at a distance you set. |
| Perception | LocalMapper fuses laser scans and point clouds into a local occupancy map while the robot drives. MapServer serves the static global map from a file, as a grid or a point cloud. |
| Safety | DriveManager is the last stop before the wheels: it limits every command to the robot’s envelope, slows for what is near, stops for what is too close, and drives the robot out when it gets stuck. |
| Testing | MotionServer sends reference commands and records the resulting motion, for tuning and regression testing on a real robot. |
Learn more about each one in the EMOS Documentation: Planner · Controller · Local Mapper · Map Server · Drive Manager · Motion Server
Key Features
- A stack that rearranges itself. Any component can react to what another one publishes. Switch the control algorithm when the current one runs out of options, disable backward motion when a proximity sensor goes quiet, or hold a mission and follow a person the moment a model sees one. Nothing is relaunched.
- Engineered for speed. The core algorithms are modern C++ (kompass-core), with GPU execution through GPGPU rather than a single vendor’s toolkit, so the same recipe runs fast on an Nvidia Jetson, an AMD board or plain CPUs.
- ML models as first-class citizens. Any model output can drive an event — a detection, a tracked target, a decision model’s answer, a VLM’s reading of the scene — and reconfigure navigation exactly as a sensor reading would. Kompass and EmbodiedAgents, the intelligence layer of EMOS, are built on the same component framework, so one recipe can wire both into a single graph: perception, language and planning triggering navigation, and navigation triggering them back.
- Hardware-agnostic. Differential drive, Ackermann, omnidirectional and legged platforms share one robot configuration: geometry, velocity limits and acceleration limits. The control and safety path does not change with the chassis.
- Pythonic API with native speed. The heavy lifting stays in C++ while the recipe stays a readable Python file. Prototype and deploy without rewriting anything.
Build Event-Driven Navigation Missions
One patrol with Kompass, four surprises, zero relaunches.
Every reaction in the mission above is a line in its Recipe: an event paired with an action.
- The active controller runs out of options → switch to another one and keep going.
- The rear proximity sensor goes quiet → disable backward motion without pausing the mission.
- A person is detected at a defined meeting zone → switch to vision mode and follow them.
- The drop-off zone is reached → stop person following, pick the patrol route back up where it left off.
The safety envelope watches through all of it.
Here is the first reaction, added to the Quick Start recipe before launcher.bringup():
```python from automatika_ros_sugar.msg import ComponentStatus from kompass.ros import Action, Event
When DWA can’t find a way forward, hand over to DVZ
controller_stuck = Event( controller.status_topic.msg.status == ComponentStatus.STATUS_FAILURE_ALGORITHM_LEVEL
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/automatika-robotics/kompass.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| kompass | 0.8.0 |
| kompass_interfaces | 0.8.0 |
README
**GPU-accelerated, event-driven navigation for the real world** [](LICENSE) [](https://emos.automatikarobotics.com/getting-started/installation.html) [](https://discord.gg/B9ZU6qjzND) [**Documentation**](https://emos.automatikarobotics.com) · [**Developer Docs**](https://automatika-robotics.github.io/kompass/) · [**Discord**](https://discord.gg/B9ZU6qjzND)
One system - Four configurable navigation modes.
Kompass is the navigation layer of EMOS, the Embodied Operating System. An event-driven navigation system, made for robots working in the real world.
Real environments don’t hold still. People walk into the path, sensors drop out, plans go stale, and a stack that is fixed at launch will soon fail. Kompass adapts at runtime. It swaps controllers, tightens safety limits, or reconfigures itself, all on the fly, with no relaunch needed.
Under the hood, every component runs on optimized C++ that executes on CPU or any GPU.
Forget rigid behavior trees. In Kompass, any complex behavior for your robot is a single Python script, a Recipe: wire events to actions across the whole stack and describe how your robot should react, in a few readable lines.
Components
| Area | Components |
|---|---|
| Planning | Planner finds a path around the known map with OMPL, re-planning until the robot arrives, and records a route driven by hand so it can be played back later. MissionManager runs a list of waypoints in order, holding at each one for a set time or until a condition is met. |
| Control | Controller turns a route into the velocities this robot can make, steering around what moves: DWA, Stanley, Pure Pursuit and DVZ for path tracking, RGB and RGB-D followers for keeping a target in view at a distance you set. |
| Perception | LocalMapper fuses laser scans and point clouds into a local occupancy map while the robot drives. MapServer serves the static global map from a file, as a grid or a point cloud. |
| Safety | DriveManager is the last stop before the wheels: it limits every command to the robot’s envelope, slows for what is near, stops for what is too close, and drives the robot out when it gets stuck. |
| Testing | MotionServer sends reference commands and records the resulting motion, for tuning and regression testing on a real robot. |
Learn more about each one in the EMOS Documentation: Planner · Controller · Local Mapper · Map Server · Drive Manager · Motion Server
Key Features
- A stack that rearranges itself. Any component can react to what another one publishes. Switch the control algorithm when the current one runs out of options, disable backward motion when a proximity sensor goes quiet, or hold a mission and follow a person the moment a model sees one. Nothing is relaunched.
- Engineered for speed. The core algorithms are modern C++ (kompass-core), with GPU execution through GPGPU rather than a single vendor’s toolkit, so the same recipe runs fast on an Nvidia Jetson, an AMD board or plain CPUs.
- ML models as first-class citizens. Any model output can drive an event — a detection, a tracked target, a decision model’s answer, a VLM’s reading of the scene — and reconfigure navigation exactly as a sensor reading would. Kompass and EmbodiedAgents, the intelligence layer of EMOS, are built on the same component framework, so one recipe can wire both into a single graph: perception, language and planning triggering navigation, and navigation triggering them back.
- Hardware-agnostic. Differential drive, Ackermann, omnidirectional and legged platforms share one robot configuration: geometry, velocity limits and acceleration limits. The control and safety path does not change with the chassis.
- Pythonic API with native speed. The heavy lifting stays in C++ while the recipe stays a readable Python file. Prototype and deploy without rewriting anything.
Build Event-Driven Navigation Missions
One patrol with Kompass, four surprises, zero relaunches.
Every reaction in the mission above is a line in its Recipe: an event paired with an action.
- The active controller runs out of options → switch to another one and keep going.
- The rear proximity sensor goes quiet → disable backward motion without pausing the mission.
- A person is detected at a defined meeting zone → switch to vision mode and follow them.
- The drop-off zone is reached → stop person following, pick the patrol route back up where it left off.
The safety envelope watches through all of it.
Here is the first reaction, added to the Quick Start recipe before launcher.bringup():
```python from automatika_ros_sugar.msg import ComponentStatus from kompass.ros import Action, Event
When DWA can’t find a way forward, hand over to DVZ
controller_stuck = Event( controller.status_topic.msg.status == ComponentStatus.STATUS_FAILURE_ALGORITHM_LEVEL
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/automatika-robotics/kompass.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| kompass | 0.8.0 |
| kompass_interfaces | 0.8.0 |
README
**GPU-accelerated, event-driven navigation for the real world** [](LICENSE) [](https://emos.automatikarobotics.com/getting-started/installation.html) [](https://discord.gg/B9ZU6qjzND) [**Documentation**](https://emos.automatikarobotics.com) · [**Developer Docs**](https://automatika-robotics.github.io/kompass/) · [**Discord**](https://discord.gg/B9ZU6qjzND)
One system - Four configurable navigation modes.
Kompass is the navigation layer of EMOS, the Embodied Operating System. An event-driven navigation system, made for robots working in the real world.
Real environments don’t hold still. People walk into the path, sensors drop out, plans go stale, and a stack that is fixed at launch will soon fail. Kompass adapts at runtime. It swaps controllers, tightens safety limits, or reconfigures itself, all on the fly, with no relaunch needed.
Under the hood, every component runs on optimized C++ that executes on CPU or any GPU.
Forget rigid behavior trees. In Kompass, any complex behavior for your robot is a single Python script, a Recipe: wire events to actions across the whole stack and describe how your robot should react, in a few readable lines.
Components
| Area | Components |
|---|---|
| Planning | Planner finds a path around the known map with OMPL, re-planning until the robot arrives, and records a route driven by hand so it can be played back later. MissionManager runs a list of waypoints in order, holding at each one for a set time or until a condition is met. |
| Control | Controller turns a route into the velocities this robot can make, steering around what moves: DWA, Stanley, Pure Pursuit and DVZ for path tracking, RGB and RGB-D followers for keeping a target in view at a distance you set. |
| Perception | LocalMapper fuses laser scans and point clouds into a local occupancy map while the robot drives. MapServer serves the static global map from a file, as a grid or a point cloud. |
| Safety | DriveManager is the last stop before the wheels: it limits every command to the robot’s envelope, slows for what is near, stops for what is too close, and drives the robot out when it gets stuck. |
| Testing | MotionServer sends reference commands and records the resulting motion, for tuning and regression testing on a real robot. |
Learn more about each one in the EMOS Documentation: Planner · Controller · Local Mapper · Map Server · Drive Manager · Motion Server
Key Features
- A stack that rearranges itself. Any component can react to what another one publishes. Switch the control algorithm when the current one runs out of options, disable backward motion when a proximity sensor goes quiet, or hold a mission and follow a person the moment a model sees one. Nothing is relaunched.
- Engineered for speed. The core algorithms are modern C++ (kompass-core), with GPU execution through GPGPU rather than a single vendor’s toolkit, so the same recipe runs fast on an Nvidia Jetson, an AMD board or plain CPUs.
- ML models as first-class citizens. Any model output can drive an event — a detection, a tracked target, a decision model’s answer, a VLM’s reading of the scene — and reconfigure navigation exactly as a sensor reading would. Kompass and EmbodiedAgents, the intelligence layer of EMOS, are built on the same component framework, so one recipe can wire both into a single graph: perception, language and planning triggering navigation, and navigation triggering them back.
- Hardware-agnostic. Differential drive, Ackermann, omnidirectional and legged platforms share one robot configuration: geometry, velocity limits and acceleration limits. The control and safety path does not change with the chassis.
- Pythonic API with native speed. The heavy lifting stays in C++ while the recipe stays a readable Python file. Prototype and deploy without rewriting anything.
Build Event-Driven Navigation Missions
One patrol with Kompass, four surprises, zero relaunches.
Every reaction in the mission above is a line in its Recipe: an event paired with an action.
- The active controller runs out of options → switch to another one and keep going.
- The rear proximity sensor goes quiet → disable backward motion without pausing the mission.
- A person is detected at a defined meeting zone → switch to vision mode and follow them.
- The drop-off zone is reached → stop person following, pick the patrol route back up where it left off.
The safety envelope watches through all of it.
Here is the first reaction, added to the Quick Start recipe before launcher.bringup():
```python from automatika_ros_sugar.msg import ComponentStatus from kompass.ros import Action, Event
When DWA can’t find a way forward, hand over to DVZ
controller_stuck = Event( controller.status_topic.msg.status == ComponentStatus.STATUS_FAILURE_ALGORITHM_LEVEL
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/automatika-robotics/kompass.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| kompass | 0.8.0 |
| kompass_interfaces | 0.8.0 |
README
**GPU-accelerated, event-driven navigation for the real world** [](LICENSE) [](https://emos.automatikarobotics.com/getting-started/installation.html) [](https://discord.gg/B9ZU6qjzND) [**Documentation**](https://emos.automatikarobotics.com) · [**Developer Docs**](https://automatika-robotics.github.io/kompass/) · [**Discord**](https://discord.gg/B9ZU6qjzND)
One system - Four configurable navigation modes.
Kompass is the navigation layer of EMOS, the Embodied Operating System. An event-driven navigation system, made for robots working in the real world.
Real environments don’t hold still. People walk into the path, sensors drop out, plans go stale, and a stack that is fixed at launch will soon fail. Kompass adapts at runtime. It swaps controllers, tightens safety limits, or reconfigures itself, all on the fly, with no relaunch needed.
Under the hood, every component runs on optimized C++ that executes on CPU or any GPU.
Forget rigid behavior trees. In Kompass, any complex behavior for your robot is a single Python script, a Recipe: wire events to actions across the whole stack and describe how your robot should react, in a few readable lines.
Components
| Area | Components |
|---|---|
| Planning | Planner finds a path around the known map with OMPL, re-planning until the robot arrives, and records a route driven by hand so it can be played back later. MissionManager runs a list of waypoints in order, holding at each one for a set time or until a condition is met. |
| Control | Controller turns a route into the velocities this robot can make, steering around what moves: DWA, Stanley, Pure Pursuit and DVZ for path tracking, RGB and RGB-D followers for keeping a target in view at a distance you set. |
| Perception | LocalMapper fuses laser scans and point clouds into a local occupancy map while the robot drives. MapServer serves the static global map from a file, as a grid or a point cloud. |
| Safety | DriveManager is the last stop before the wheels: it limits every command to the robot’s envelope, slows for what is near, stops for what is too close, and drives the robot out when it gets stuck. |
| Testing | MotionServer sends reference commands and records the resulting motion, for tuning and regression testing on a real robot. |
Learn more about each one in the EMOS Documentation: Planner · Controller · Local Mapper · Map Server · Drive Manager · Motion Server
Key Features
- A stack that rearranges itself. Any component can react to what another one publishes. Switch the control algorithm when the current one runs out of options, disable backward motion when a proximity sensor goes quiet, or hold a mission and follow a person the moment a model sees one. Nothing is relaunched.
- Engineered for speed. The core algorithms are modern C++ (kompass-core), with GPU execution through GPGPU rather than a single vendor’s toolkit, so the same recipe runs fast on an Nvidia Jetson, an AMD board or plain CPUs.
- ML models as first-class citizens. Any model output can drive an event — a detection, a tracked target, a decision model’s answer, a VLM’s reading of the scene — and reconfigure navigation exactly as a sensor reading would. Kompass and EmbodiedAgents, the intelligence layer of EMOS, are built on the same component framework, so one recipe can wire both into a single graph: perception, language and planning triggering navigation, and navigation triggering them back.
- Hardware-agnostic. Differential drive, Ackermann, omnidirectional and legged platforms share one robot configuration: geometry, velocity limits and acceleration limits. The control and safety path does not change with the chassis.
- Pythonic API with native speed. The heavy lifting stays in C++ while the recipe stays a readable Python file. Prototype and deploy without rewriting anything.
Build Event-Driven Navigation Missions
One patrol with Kompass, four surprises, zero relaunches.
Every reaction in the mission above is a line in its Recipe: an event paired with an action.
- The active controller runs out of options → switch to another one and keep going.
- The rear proximity sensor goes quiet → disable backward motion without pausing the mission.
- A person is detected at a defined meeting zone → switch to vision mode and follow them.
- The drop-off zone is reached → stop person following, pick the patrol route back up where it left off.
The safety envelope watches through all of it.
Here is the first reaction, added to the Quick Start recipe before launcher.bringup():
```python from automatika_ros_sugar.msg import ComponentStatus from kompass.ros import Action, Event
When DWA can’t find a way forward, hand over to DVZ
controller_stuck = Event( controller.status_topic.msg.status == ComponentStatus.STATUS_FAILURE_ALGORITHM_LEVEL
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/automatika-robotics/kompass.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| kompass | 0.8.0 |
| kompass_interfaces | 0.8.0 |
README
**GPU-accelerated, event-driven navigation for the real world** [](LICENSE) [](https://emos.automatikarobotics.com/getting-started/installation.html) [](https://discord.gg/B9ZU6qjzND) [**Documentation**](https://emos.automatikarobotics.com) · [**Developer Docs**](https://automatika-robotics.github.io/kompass/) · [**Discord**](https://discord.gg/B9ZU6qjzND)
One system - Four configurable navigation modes.
Kompass is the navigation layer of EMOS, the Embodied Operating System. An event-driven navigation system, made for robots working in the real world.
Real environments don’t hold still. People walk into the path, sensors drop out, plans go stale, and a stack that is fixed at launch will soon fail. Kompass adapts at runtime. It swaps controllers, tightens safety limits, or reconfigures itself, all on the fly, with no relaunch needed.
Under the hood, every component runs on optimized C++ that executes on CPU or any GPU.
Forget rigid behavior trees. In Kompass, any complex behavior for your robot is a single Python script, a Recipe: wire events to actions across the whole stack and describe how your robot should react, in a few readable lines.
Components
| Area | Components |
|---|---|
| Planning | Planner finds a path around the known map with OMPL, re-planning until the robot arrives, and records a route driven by hand so it can be played back later. MissionManager runs a list of waypoints in order, holding at each one for a set time or until a condition is met. |
| Control | Controller turns a route into the velocities this robot can make, steering around what moves: DWA, Stanley, Pure Pursuit and DVZ for path tracking, RGB and RGB-D followers for keeping a target in view at a distance you set. |
| Perception | LocalMapper fuses laser scans and point clouds into a local occupancy map while the robot drives. MapServer serves the static global map from a file, as a grid or a point cloud. |
| Safety | DriveManager is the last stop before the wheels: it limits every command to the robot’s envelope, slows for what is near, stops for what is too close, and drives the robot out when it gets stuck. |
| Testing | MotionServer sends reference commands and records the resulting motion, for tuning and regression testing on a real robot. |
Learn more about each one in the EMOS Documentation: Planner · Controller · Local Mapper · Map Server · Drive Manager · Motion Server
Key Features
- A stack that rearranges itself. Any component can react to what another one publishes. Switch the control algorithm when the current one runs out of options, disable backward motion when a proximity sensor goes quiet, or hold a mission and follow a person the moment a model sees one. Nothing is relaunched.
- Engineered for speed. The core algorithms are modern C++ (kompass-core), with GPU execution through GPGPU rather than a single vendor’s toolkit, so the same recipe runs fast on an Nvidia Jetson, an AMD board or plain CPUs.
- ML models as first-class citizens. Any model output can drive an event — a detection, a tracked target, a decision model’s answer, a VLM’s reading of the scene — and reconfigure navigation exactly as a sensor reading would. Kompass and EmbodiedAgents, the intelligence layer of EMOS, are built on the same component framework, so one recipe can wire both into a single graph: perception, language and planning triggering navigation, and navigation triggering them back.
- Hardware-agnostic. Differential drive, Ackermann, omnidirectional and legged platforms share one robot configuration: geometry, velocity limits and acceleration limits. The control and safety path does not change with the chassis.
- Pythonic API with native speed. The heavy lifting stays in C++ while the recipe stays a readable Python file. Prototype and deploy without rewriting anything.
Build Event-Driven Navigation Missions
One patrol with Kompass, four surprises, zero relaunches.
Every reaction in the mission above is a line in its Recipe: an event paired with an action.
- The active controller runs out of options → switch to another one and keep going.
- The rear proximity sensor goes quiet → disable backward motion without pausing the mission.
- A person is detected at a defined meeting zone → switch to vision mode and follow them.
- The drop-off zone is reached → stop person following, pick the patrol route back up where it left off.
The safety envelope watches through all of it.
Here is the first reaction, added to the Quick Start recipe before launcher.bringup():
```python from automatika_ros_sugar.msg import ComponentStatus from kompass.ros import Action, Event
When DWA can’t find a way forward, hand over to DVZ
controller_stuck = Event( controller.status_topic.msg.status == ComponentStatus.STATUS_FAILURE_ALGORITHM_LEVEL
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/automatika-robotics/kompass.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| kompass | 0.8.0 |
| kompass_interfaces | 0.8.0 |
README
**GPU-accelerated, event-driven navigation for the real world** [](LICENSE) [](https://emos.automatikarobotics.com/getting-started/installation.html) [](https://discord.gg/B9ZU6qjzND) [**Documentation**](https://emos.automatikarobotics.com) · [**Developer Docs**](https://automatika-robotics.github.io/kompass/) · [**Discord**](https://discord.gg/B9ZU6qjzND)
One system - Four configurable navigation modes.
Kompass is the navigation layer of EMOS, the Embodied Operating System. An event-driven navigation system, made for robots working in the real world.
Real environments don’t hold still. People walk into the path, sensors drop out, plans go stale, and a stack that is fixed at launch will soon fail. Kompass adapts at runtime. It swaps controllers, tightens safety limits, or reconfigures itself, all on the fly, with no relaunch needed.
Under the hood, every component runs on optimized C++ that executes on CPU or any GPU.
Forget rigid behavior trees. In Kompass, any complex behavior for your robot is a single Python script, a Recipe: wire events to actions across the whole stack and describe how your robot should react, in a few readable lines.
Components
| Area | Components |
|---|---|
| Planning | Planner finds a path around the known map with OMPL, re-planning until the robot arrives, and records a route driven by hand so it can be played back later. MissionManager runs a list of waypoints in order, holding at each one for a set time or until a condition is met. |
| Control | Controller turns a route into the velocities this robot can make, steering around what moves: DWA, Stanley, Pure Pursuit and DVZ for path tracking, RGB and RGB-D followers for keeping a target in view at a distance you set. |
| Perception | LocalMapper fuses laser scans and point clouds into a local occupancy map while the robot drives. MapServer serves the static global map from a file, as a grid or a point cloud. |
| Safety | DriveManager is the last stop before the wheels: it limits every command to the robot’s envelope, slows for what is near, stops for what is too close, and drives the robot out when it gets stuck. |
| Testing | MotionServer sends reference commands and records the resulting motion, for tuning and regression testing on a real robot. |
Learn more about each one in the EMOS Documentation: Planner · Controller · Local Mapper · Map Server · Drive Manager · Motion Server
Key Features
- A stack that rearranges itself. Any component can react to what another one publishes. Switch the control algorithm when the current one runs out of options, disable backward motion when a proximity sensor goes quiet, or hold a mission and follow a person the moment a model sees one. Nothing is relaunched.
- Engineered for speed. The core algorithms are modern C++ (kompass-core), with GPU execution through GPGPU rather than a single vendor’s toolkit, so the same recipe runs fast on an Nvidia Jetson, an AMD board or plain CPUs.
- ML models as first-class citizens. Any model output can drive an event — a detection, a tracked target, a decision model’s answer, a VLM’s reading of the scene — and reconfigure navigation exactly as a sensor reading would. Kompass and EmbodiedAgents, the intelligence layer of EMOS, are built on the same component framework, so one recipe can wire both into a single graph: perception, language and planning triggering navigation, and navigation triggering them back.
- Hardware-agnostic. Differential drive, Ackermann, omnidirectional and legged platforms share one robot configuration: geometry, velocity limits and acceleration limits. The control and safety path does not change with the chassis.
- Pythonic API with native speed. The heavy lifting stays in C++ while the recipe stays a readable Python file. Prototype and deploy without rewriting anything.
Build Event-Driven Navigation Missions
One patrol with Kompass, four surprises, zero relaunches.
Every reaction in the mission above is a line in its Recipe: an event paired with an action.
- The active controller runs out of options → switch to another one and keep going.
- The rear proximity sensor goes quiet → disable backward motion without pausing the mission.
- A person is detected at a defined meeting zone → switch to vision mode and follow them.
- The drop-off zone is reached → stop person following, pick the patrol route back up where it left off.
The safety envelope watches through all of it.
Here is the first reaction, added to the Quick Start recipe before launcher.bringup():
```python from automatika_ros_sugar.msg import ComponentStatus from kompass.ros import Action, Event
When DWA can’t find a way forward, hand over to DVZ
controller_stuck = Event( controller.status_topic.msg.status == ComponentStatus.STATUS_FAILURE_ALGORITHM_LEVEL
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/automatika-robotics/kompass.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| kompass | 0.8.0 |
| kompass_interfaces | 0.8.0 |
README
**GPU-accelerated, event-driven navigation for the real world** [](LICENSE) [](https://emos.automatikarobotics.com/getting-started/installation.html) [](https://discord.gg/B9ZU6qjzND) [**Documentation**](https://emos.automatikarobotics.com) · [**Developer Docs**](https://automatika-robotics.github.io/kompass/) · [**Discord**](https://discord.gg/B9ZU6qjzND)
One system - Four configurable navigation modes.
Kompass is the navigation layer of EMOS, the Embodied Operating System. An event-driven navigation system, made for robots working in the real world.
Real environments don’t hold still. People walk into the path, sensors drop out, plans go stale, and a stack that is fixed at launch will soon fail. Kompass adapts at runtime. It swaps controllers, tightens safety limits, or reconfigures itself, all on the fly, with no relaunch needed.
Under the hood, every component runs on optimized C++ that executes on CPU or any GPU.
Forget rigid behavior trees. In Kompass, any complex behavior for your robot is a single Python script, a Recipe: wire events to actions across the whole stack and describe how your robot should react, in a few readable lines.
Components
| Area | Components |
|---|---|
| Planning | Planner finds a path around the known map with OMPL, re-planning until the robot arrives, and records a route driven by hand so it can be played back later. MissionManager runs a list of waypoints in order, holding at each one for a set time or until a condition is met. |
| Control | Controller turns a route into the velocities this robot can make, steering around what moves: DWA, Stanley, Pure Pursuit and DVZ for path tracking, RGB and RGB-D followers for keeping a target in view at a distance you set. |
| Perception | LocalMapper fuses laser scans and point clouds into a local occupancy map while the robot drives. MapServer serves the static global map from a file, as a grid or a point cloud. |
| Safety | DriveManager is the last stop before the wheels: it limits every command to the robot’s envelope, slows for what is near, stops for what is too close, and drives the robot out when it gets stuck. |
| Testing | MotionServer sends reference commands and records the resulting motion, for tuning and regression testing on a real robot. |
Learn more about each one in the EMOS Documentation: Planner · Controller · Local Mapper · Map Server · Drive Manager · Motion Server
Key Features
- A stack that rearranges itself. Any component can react to what another one publishes. Switch the control algorithm when the current one runs out of options, disable backward motion when a proximity sensor goes quiet, or hold a mission and follow a person the moment a model sees one. Nothing is relaunched.
- Engineered for speed. The core algorithms are modern C++ (kompass-core), with GPU execution through GPGPU rather than a single vendor’s toolkit, so the same recipe runs fast on an Nvidia Jetson, an AMD board or plain CPUs.
- ML models as first-class citizens. Any model output can drive an event — a detection, a tracked target, a decision model’s answer, a VLM’s reading of the scene — and reconfigure navigation exactly as a sensor reading would. Kompass and EmbodiedAgents, the intelligence layer of EMOS, are built on the same component framework, so one recipe can wire both into a single graph: perception, language and planning triggering navigation, and navigation triggering them back.
- Hardware-agnostic. Differential drive, Ackermann, omnidirectional and legged platforms share one robot configuration: geometry, velocity limits and acceleration limits. The control and safety path does not change with the chassis.
- Pythonic API with native speed. The heavy lifting stays in C++ while the recipe stays a readable Python file. Prototype and deploy without rewriting anything.
Build Event-Driven Navigation Missions
One patrol with Kompass, four surprises, zero relaunches.
Every reaction in the mission above is a line in its Recipe: an event paired with an action.
- The active controller runs out of options → switch to another one and keep going.
- The rear proximity sensor goes quiet → disable backward motion without pausing the mission.
- A person is detected at a defined meeting zone → switch to vision mode and follow them.
- The drop-off zone is reached → stop person following, pick the patrol route back up where it left off.
The safety envelope watches through all of it.
Here is the first reaction, added to the Quick Start recipe before launcher.bringup():
```python from automatika_ros_sugar.msg import ComponentStatus from kompass.ros import Action, Event
When DWA can’t find a way forward, hand over to DVZ
controller_stuck = Event( controller.status_topic.msg.status == ComponentStatus.STATUS_FAILURE_ALGORITHM_LEVEL
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/automatika-robotics/kompass.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| kompass | 0.8.0 |
| kompass_interfaces | 0.8.0 |
README
**GPU-accelerated, event-driven navigation for the real world** [](LICENSE) [](https://emos.automatikarobotics.com/getting-started/installation.html) [](https://discord.gg/B9ZU6qjzND) [**Documentation**](https://emos.automatikarobotics.com) · [**Developer Docs**](https://automatika-robotics.github.io/kompass/) · [**Discord**](https://discord.gg/B9ZU6qjzND)
One system - Four configurable navigation modes.
Kompass is the navigation layer of EMOS, the Embodied Operating System. An event-driven navigation system, made for robots working in the real world.
Real environments don’t hold still. People walk into the path, sensors drop out, plans go stale, and a stack that is fixed at launch will soon fail. Kompass adapts at runtime. It swaps controllers, tightens safety limits, or reconfigures itself, all on the fly, with no relaunch needed.
Under the hood, every component runs on optimized C++ that executes on CPU or any GPU.
Forget rigid behavior trees. In Kompass, any complex behavior for your robot is a single Python script, a Recipe: wire events to actions across the whole stack and describe how your robot should react, in a few readable lines.
Components
| Area | Components |
|---|---|
| Planning | Planner finds a path around the known map with OMPL, re-planning until the robot arrives, and records a route driven by hand so it can be played back later. MissionManager runs a list of waypoints in order, holding at each one for a set time or until a condition is met. |
| Control | Controller turns a route into the velocities this robot can make, steering around what moves: DWA, Stanley, Pure Pursuit and DVZ for path tracking, RGB and RGB-D followers for keeping a target in view at a distance you set. |
| Perception | LocalMapper fuses laser scans and point clouds into a local occupancy map while the robot drives. MapServer serves the static global map from a file, as a grid or a point cloud. |
| Safety | DriveManager is the last stop before the wheels: it limits every command to the robot’s envelope, slows for what is near, stops for what is too close, and drives the robot out when it gets stuck. |
| Testing | MotionServer sends reference commands and records the resulting motion, for tuning and regression testing on a real robot. |
Learn more about each one in the EMOS Documentation: Planner · Controller · Local Mapper · Map Server · Drive Manager · Motion Server
Key Features
- A stack that rearranges itself. Any component can react to what another one publishes. Switch the control algorithm when the current one runs out of options, disable backward motion when a proximity sensor goes quiet, or hold a mission and follow a person the moment a model sees one. Nothing is relaunched.
- Engineered for speed. The core algorithms are modern C++ (kompass-core), with GPU execution through GPGPU rather than a single vendor’s toolkit, so the same recipe runs fast on an Nvidia Jetson, an AMD board or plain CPUs.
- ML models as first-class citizens. Any model output can drive an event — a detection, a tracked target, a decision model’s answer, a VLM’s reading of the scene — and reconfigure navigation exactly as a sensor reading would. Kompass and EmbodiedAgents, the intelligence layer of EMOS, are built on the same component framework, so one recipe can wire both into a single graph: perception, language and planning triggering navigation, and navigation triggering them back.
- Hardware-agnostic. Differential drive, Ackermann, omnidirectional and legged platforms share one robot configuration: geometry, velocity limits and acceleration limits. The control and safety path does not change with the chassis.
- Pythonic API with native speed. The heavy lifting stays in C++ while the recipe stays a readable Python file. Prototype and deploy without rewriting anything.
Build Event-Driven Navigation Missions
One patrol with Kompass, four surprises, zero relaunches.
Every reaction in the mission above is a line in its Recipe: an event paired with an action.
- The active controller runs out of options → switch to another one and keep going.
- The rear proximity sensor goes quiet → disable backward motion without pausing the mission.
- A person is detected at a defined meeting zone → switch to vision mode and follow them.
- The drop-off zone is reached → stop person following, pick the patrol route back up where it left off.
The safety envelope watches through all of it.
Here is the first reaction, added to the Quick Start recipe before launcher.bringup():
```python from automatika_ros_sugar.msg import ComponentStatus from kompass.ros import Action, Event
When DWA can’t find a way forward, hand over to DVZ
controller_stuck = Event( controller.status_topic.msg.status == ComponentStatus.STATUS_FAILURE_ALGORITHM_LEVEL
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/automatika-robotics/kompass.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| kompass | 0.8.0 |
| kompass_interfaces | 0.8.0 |
README
**GPU-accelerated, event-driven navigation for the real world** [](LICENSE) [](https://emos.automatikarobotics.com/getting-started/installation.html) [](https://discord.gg/B9ZU6qjzND) [**Documentation**](https://emos.automatikarobotics.com) · [**Developer Docs**](https://automatika-robotics.github.io/kompass/) · [**Discord**](https://discord.gg/B9ZU6qjzND)
One system - Four configurable navigation modes.
Kompass is the navigation layer of EMOS, the Embodied Operating System. An event-driven navigation system, made for robots working in the real world.
Real environments don’t hold still. People walk into the path, sensors drop out, plans go stale, and a stack that is fixed at launch will soon fail. Kompass adapts at runtime. It swaps controllers, tightens safety limits, or reconfigures itself, all on the fly, with no relaunch needed.
Under the hood, every component runs on optimized C++ that executes on CPU or any GPU.
Forget rigid behavior trees. In Kompass, any complex behavior for your robot is a single Python script, a Recipe: wire events to actions across the whole stack and describe how your robot should react, in a few readable lines.
Components
| Area | Components |
|---|---|
| Planning | Planner finds a path around the known map with OMPL, re-planning until the robot arrives, and records a route driven by hand so it can be played back later. MissionManager runs a list of waypoints in order, holding at each one for a set time or until a condition is met. |
| Control | Controller turns a route into the velocities this robot can make, steering around what moves: DWA, Stanley, Pure Pursuit and DVZ for path tracking, RGB and RGB-D followers for keeping a target in view at a distance you set. |
| Perception | LocalMapper fuses laser scans and point clouds into a local occupancy map while the robot drives. MapServer serves the static global map from a file, as a grid or a point cloud. |
| Safety | DriveManager is the last stop before the wheels: it limits every command to the robot’s envelope, slows for what is near, stops for what is too close, and drives the robot out when it gets stuck. |
| Testing | MotionServer sends reference commands and records the resulting motion, for tuning and regression testing on a real robot. |
Learn more about each one in the EMOS Documentation: Planner · Controller · Local Mapper · Map Server · Drive Manager · Motion Server
Key Features
- A stack that rearranges itself. Any component can react to what another one publishes. Switch the control algorithm when the current one runs out of options, disable backward motion when a proximity sensor goes quiet, or hold a mission and follow a person the moment a model sees one. Nothing is relaunched.
- Engineered for speed. The core algorithms are modern C++ (kompass-core), with GPU execution through GPGPU rather than a single vendor’s toolkit, so the same recipe runs fast on an Nvidia Jetson, an AMD board or plain CPUs.
- ML models as first-class citizens. Any model output can drive an event — a detection, a tracked target, a decision model’s answer, a VLM’s reading of the scene — and reconfigure navigation exactly as a sensor reading would. Kompass and EmbodiedAgents, the intelligence layer of EMOS, are built on the same component framework, so one recipe can wire both into a single graph: perception, language and planning triggering navigation, and navigation triggering them back.
- Hardware-agnostic. Differential drive, Ackermann, omnidirectional and legged platforms share one robot configuration: geometry, velocity limits and acceleration limits. The control and safety path does not change with the chassis.
- Pythonic API with native speed. The heavy lifting stays in C++ while the recipe stays a readable Python file. Prototype and deploy without rewriting anything.
Build Event-Driven Navigation Missions
One patrol with Kompass, four surprises, zero relaunches.
Every reaction in the mission above is a line in its Recipe: an event paired with an action.
- The active controller runs out of options → switch to another one and keep going.
- The rear proximity sensor goes quiet → disable backward motion without pausing the mission.
- A person is detected at a defined meeting zone → switch to vision mode and follow them.
- The drop-off zone is reached → stop person following, pick the patrol route back up where it left off.
The safety envelope watches through all of it.
Here is the first reaction, added to the Quick Start recipe before launcher.bringup():
```python from automatika_ros_sugar.msg import ComponentStatus from kompass.ros import Action, Event
When DWA can’t find a way forward, hand over to DVZ
controller_stuck = Event( controller.status_topic.msg.status == ComponentStatus.STATUS_FAILURE_ALGORITHM_LEVEL
File truncated at 100 lines see the full file
CONTRIBUTING
Repository Summary
| Description | |
| Checkout URI | https://github.com/automatika-robotics/kompass.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-22 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| kompass | 0.8.0 |
| kompass_interfaces | 0.8.0 |
README
**GPU-accelerated, event-driven navigation for the real world** [](LICENSE) [](https://emos.automatikarobotics.com/getting-started/installation.html) [](https://discord.gg/B9ZU6qjzND) [**Documentation**](https://emos.automatikarobotics.com) · [**Developer Docs**](https://automatika-robotics.github.io/kompass/) · [**Discord**](https://discord.gg/B9ZU6qjzND)
One system - Four configurable navigation modes.
Kompass is the navigation layer of EMOS, the Embodied Operating System. An event-driven navigation system, made for robots working in the real world.
Real environments don’t hold still. People walk into the path, sensors drop out, plans go stale, and a stack that is fixed at launch will soon fail. Kompass adapts at runtime. It swaps controllers, tightens safety limits, or reconfigures itself, all on the fly, with no relaunch needed.
Under the hood, every component runs on optimized C++ that executes on CPU or any GPU.
Forget rigid behavior trees. In Kompass, any complex behavior for your robot is a single Python script, a Recipe: wire events to actions across the whole stack and describe how your robot should react, in a few readable lines.
Components
| Area | Components |
|---|---|
| Planning | Planner finds a path around the known map with OMPL, re-planning until the robot arrives, and records a route driven by hand so it can be played back later. MissionManager runs a list of waypoints in order, holding at each one for a set time or until a condition is met. |
| Control | Controller turns a route into the velocities this robot can make, steering around what moves: DWA, Stanley, Pure Pursuit and DVZ for path tracking, RGB and RGB-D followers for keeping a target in view at a distance you set. |
| Perception | LocalMapper fuses laser scans and point clouds into a local occupancy map while the robot drives. MapServer serves the static global map from a file, as a grid or a point cloud. |
| Safety | DriveManager is the last stop before the wheels: it limits every command to the robot’s envelope, slows for what is near, stops for what is too close, and drives the robot out when it gets stuck. |
| Testing | MotionServer sends reference commands and records the resulting motion, for tuning and regression testing on a real robot. |
Learn more about each one in the EMOS Documentation: Planner · Controller · Local Mapper · Map Server · Drive Manager · Motion Server
Key Features
- A stack that rearranges itself. Any component can react to what another one publishes. Switch the control algorithm when the current one runs out of options, disable backward motion when a proximity sensor goes quiet, or hold a mission and follow a person the moment a model sees one. Nothing is relaunched.
- Engineered for speed. The core algorithms are modern C++ (kompass-core), with GPU execution through GPGPU rather than a single vendor’s toolkit, so the same recipe runs fast on an Nvidia Jetson, an AMD board or plain CPUs.
- ML models as first-class citizens. Any model output can drive an event — a detection, a tracked target, a decision model’s answer, a VLM’s reading of the scene — and reconfigure navigation exactly as a sensor reading would. Kompass and EmbodiedAgents, the intelligence layer of EMOS, are built on the same component framework, so one recipe can wire both into a single graph: perception, language and planning triggering navigation, and navigation triggering them back.
- Hardware-agnostic. Differential drive, Ackermann, omnidirectional and legged platforms share one robot configuration: geometry, velocity limits and acceleration limits. The control and safety path does not change with the chassis.
- Pythonic API with native speed. The heavy lifting stays in C++ while the recipe stays a readable Python file. Prototype and deploy without rewriting anything.
Build Event-Driven Navigation Missions
One patrol with Kompass, four surprises, zero relaunches.
Every reaction in the mission above is a line in its Recipe: an event paired with an action.
- The active controller runs out of options → switch to another one and keep going.
- The rear proximity sensor goes quiet → disable backward motion without pausing the mission.
- A person is detected at a defined meeting zone → switch to vision mode and follow them.
- The drop-off zone is reached → stop person following, pick the patrol route back up where it left off.
The safety envelope watches through all of it.
Here is the first reaction, added to the Quick Start recipe before launcher.bringup():
```python from automatika_ros_sugar.msg import ComponentStatus from kompass.ros import Action, Event
When DWA can’t find a way forward, hand over to DVZ
controller_stuck = Event( controller.status_topic.msg.status == ComponentStatus.STATUS_FAILURE_ALGORITHM_LEVEL
File truncated at 100 lines see the full file