Build & Install

This page explains how to build EasyFleet from source and set up your development environment.

Supported platforms

EasyFleet currently targets:

  • ROS 2 rolling, on a recent Ubuntu.

Note

EasyFleet is at an earlier, research stage than EasyNavigation: there are no APT or Pixi binary packages yet, and only the rolling distro is currently exercised in CI. Building from source, in a workspace that also builds EasyNavigation, is the only supported install method today.

Prerequisites

  1. ROS 2 Rolling

    You can either use a system-wide ROS 2 Rolling install, or a self-contained Pixi environment (the approach this project’s own development workspace uses — see the pixi.toml/pixi.lock at the root of the workspace for the exact dependency set).

    # System-wide ROS 2:
    source /opt/ros/rolling/setup.bash
    
    # ...or a Pixi environment already set up for "rolling":
    eval "$(pixi shell-hook -e rolling --frozen)"
    
  2. ROS dependencies

    sudo rosdep init   # only once per machine
    rosdep update
    
  3. A few extra system packages EasyFleet itself needs on top of a plain ROS 2 install: nlohmann-json3-dev (JSON parsing in the mission manager and the EasyNav deployment) and behaviortree_cpp (the Behavior-Tree-based navigation capability). Both are picked up automatically by rosdep below.

Build from source

Workspace layout

mkdir -p ~/easyfleet_ws/src
cd ~/easyfleet_ws

Clone sources

EasyFleet is built on top of EasyNavigation: a working EasyFleet workspace needs both, plus EasyNav’s own plugin collection and its (transitive) dependencies.

cd ~/easyfleet_ws/src
git clone -b rolling https://github.com/EasyNavigation/EasyFleet.git
git clone -b rolling https://github.com/EasyNavigation/EasyNavigation.git
git clone -b rolling https://github.com/EasyNavigation/NavMap.git
git clone -b rolling https://github.com/EasyNavigation/easynav_plugins.git
git clone -b rolling https://github.com/fmrico/yaets.git

For the examples used throughout Getting Started and Examples (maps, parameter files, RViz configurations, and a Gazebo simulation), also clone:

cd ~/easyfleet_ws/src
git clone https://github.com/EasyNavigation/easynav_indoor_testcase.git
git clone -b rolling https://github.com/EasyNavigation/easynav_playground_kobuki.git
# easynav_playground_kobuki's own third-party dependencies (robot description, sim assets):
vcs import . < easynav_playground_kobuki/thirdparty.repos

Install dependencies

From the workspace root, resolve every package’s dependencies with rosdep:

cd ~/easyfleet_ws
rosdep install --from-paths src --ignore-src -y -r

Configure and build

cd ~/easyfleet_ws
colcon build --symlink-install

Source the overlay

# Source ROS 2 first, unless you're already in a Pixi shell that provides it
source /opt/ros/rolling/setup.bash
# Then source the workspace
source ~/easyfleet_ws/install/setup.bash

Run tests (optional)

cd ~/easyfleet_ws
colcon test --packages-select easyfleet_core easyfleet_interfaces \
  easyfleet_mission_manager easyfleet_navigation_manager \
  easyfleet_easynav_navigation
colcon test-result --verbose

Each ROS-communication test binary in EasyFleet runs on its own ROS_DOMAIN_ID, so the suite is safe to run even alongside interactively launched nodes — see Developer Info for details.

Troubleshooting

  • Missing rosdep keys

    Run rosdep check --from-paths src --ignore-src to diagnose. If a dependency is truly missing on your platform, please open an issue.

  • CMake not finding ROS packages, or EasyNav headers

    Make sure both ROS 2 itself and this workspace’s own install/setup.bash are sourced, in that order, before building or running any executable — EasyFleet packages depend directly on EasyNavigation packages built in the same workspace.

  • ABI / stale build issues

    Remove the build, install, and log folders and rebuild:

    cd ~/easyfleet_ws
    rm -rf build install log
    colcon build --symlink-install
    

Uninstall / clean

Since this is a self-contained workspace overlay, you can remove it safely:

rm -rf ~/easyfleet_ws

Next steps