MADIYAR MUKANOV
[ Personal Project · 2026 ]

Fleet Coordinator
— Multi-Robot Navigation in Isaac Sim

A ROS 2 package that coordinates three Nova Carter robots navigating a simulated hospital environment, resolving inter-robot collisions entirely through the Nav2 action interface — no direct velocity commands.

Metadata

SIMULATOR Isaac Sim 5.1
ROS 2 Humble
NAVIGATION Nav2 (Humble)
ROBOTS 3 × Nova Carter

Tech Stack

ROS 2 Humble Nav2 NVIDIA Isaac Sim Python 3.10 AMCL
[ 01 ]

Concept

Fleet Coordinator enables three NVIDIA Nova Carter robots to navigate a simulated hospital environment together without colliding. Rather than writing a custom motion planner or issuing direct cmd_vel commands, the coordinator node communicates exclusively through the Nav2 action server — each robot keeps using its own planner and controller, and the coordinator simply decides when a lower-priority robot should pause or resume its goal.

This keeps the system clean: no fighting between a custom controller and Nav2's own obstacle avoidance, no jittery velocity overrides. Robots either have an active goal or they don't.

[ 02 ]

Architecture

The coordinator node reads each robot's pose from its AMCL topic and tracks pairwise distances in real time. A static priority order — carter1 > carter2 > carter3 — decides who yields. When a lower-priority robot gets within 3 meters of a higher-priority one, its current Nav2 goal is cancelled and it holds position; once the distance opens back up past 5 meters, it's sent a fresh goal toward its original destination. The 3m/5m hysteresis gap prevents robots from rapidly toggling between stopped and moving when hovering near the threshold.

Hysteresis: block @3m / release @5m Static priority: carter1 > carter2 > carter3 /navigate_to_pose action client AMCL pose tracking
[ 03 ]

Demo

Three Nova Carter robots navigating a simulated hospital floor in Isaac Sim. Each robot keeps its own Nav2 goal; the coordinator only steps in to pause/resume based on proximity.

Hospital environment — three-robot coordination demo
[ 04 ]

Next Steps & Future Work

  • arrow_forward
    Dynamic Priority
    Replace the static priority order with task-based priority (e.g. urgency of delivery, battery level) so the fleet adapts to context instead of a fixed hierarchy.
  • arrow_forward
    N-Robot Scaling
    Move from pairwise distance checks to a spatial index (e.g. grid/KD-tree) so the coordinator scales past a handful of robots without an O(n²) blowup.
  • arrow_forward
    Real-Hardware Validation
    Port the coordinator from Isaac Sim onto physical Nova Carter units to validate the hysteresis thresholds against real sensor noise and latency.
[ 05 ]

Source

Coordinator node, launch files, and ROS 2 package structure all in Python.

open_in_new github.com/MadiyarM/fleet_coordinator
arrow_back Back to Projects