EasyFleet

Overview

EasyFleet is an open-source, ROS 2 framework for orchestrating fleets of multi-skill robots, designed to be:

  • Capability-oriented, not stack-specific: any robot skill — navigation, manipulation, perception, or a custom one — is exposed the same way, as a self-describing, lifecycle-managed ROS 2 action, regardless of which backend actually implements it.

  • 🧩 Backend-agnostic, through a small set of base classes any integrator subclasses once: EasyFleet ships a real EasyNavigation-backed navigation capability out of the box, but nothing in the architecture assumes EasyNav, Nav2, MoveIt, or any other specific stack.

  • 🐝 Fleet-aware from the ground up: robots announce their own identity and capabilities at runtime from their ROS namespace, so a mission controller can discover, call, and monitor any number of robots without hardcoding who they are.

  • 🗺️ Centrally coordinated when it helps: the Navigation Manager publishes one shared map and route graph for the whole fleet and watches every robot’s planned path to prevent collisions between robots sharing the same space — without requiring every robot to re-implement that logic itself.

  • 🚀 Lightweight and simple to deploy, using plain ROS 2 nodes, actions, and parameter files — no external orchestration framework required.

EasyFleet is developed by the Intelligent Robotics Lab at Universidad Rey Juan Carlos, as the fleet-coordination layer that sits on top of a per-robot navigation stack such as EasyNavigation (EasyNav).

It is structured around:

  • `easyfleet_core`, a small C++ framework for building self-describing, lifecycle-managed ROS 2 actions (“capabilities”) and their client-side counterparts.

  • The Mission Manager, reusable building blocks — in C++ or Python, your choice, both speaking the same wire protocol — for discovering active capabilities across a fleet and driving them from a mission script, an LLM-driven controller, a PDDL planner, or a Behavior Tree.

  • The Navigation Manager, a fleet-wide process that publishes a shared map and route graph, and continuously watches every robot’s planned path to pause/resume robots on imminent conflicts.

  • Example deployments, self-contained scenarios (mock capabilities, single- and multi-robot real EasyNav navigation) that double as integration tests for the whole architecture.

Whether you are prototyping a single robot with a handful of mocked capabilities or coordinating several robots sharing the same navigable space, EasyFleet provides the plumbing to discover, call, and monitor them uniformly.

We invite you to explore, use, and contribute to this project!

📚 Learn more about the team behind the project in About and Contact.

📦 Source code: github.com/EasyNavigation/EasyFleet

📢 Want to contribute? Feel free to open an issue, suggest a feature, or submit a pull request!