Install from Binaries

EasyNav is distributed as binary packages with APT (Debian packages from the ROS 2 buildfarm, the recommended way, for every distro but rolling) and Pixi (self-contained conda packages, for every distro).

Release status

EasyNav 0.5.0 is released for every distro, with the same content in all of them. Each distro has its own branch in the repositories:

Distro

APT

Pixi

Source branch

rolling

β€”

0.5.0

rolling

lyrical

0.5.0

0.5.0

lyrical

kilted

0.5.0

0.5.0

kilted

jazzy

0.5.0

0.5.0

jazzy

humble

0.5.0

0.5.0

humble

Install via Pixi

Use Pixi when you cannot install ROS 2 from APT (another Linux, no root, or several distros side by side). A Pixi environment is fully self-contained: it ships its own ROS 2 distribution, so you do not need a system ROS 2 install.

The ROS 2 packages come from RoboStack (robostack-<distro> channels). EasyNav’s conda packages, and the few dependencies RoboStack lacks, are in the Intelligent Robotics Lab channels on prefix.dev:

Note

EasyNav 0.5.0 will soon be available in the RoboStack channels too. Meanwhile, use the IRL channels below, as the pixi.toml files of this page do.

Distro

IRL channel

rolling

https://prefix.dev/fmrico/irl-rolling

lyrical

https://prefix.dev/fmrico/irl-lyrical

kilted

https://prefix.dev/irl-kilted

jazzy

https://prefix.dev/irl-jazzy

humble

https://prefix.dev/fmrico/irl-humble

Note

Keep the IRL channel before RoboStack’s in channels: Pixi takes each package from the first channel that has it, and some RoboStack channels have older EasyNav versions.

For each ROS 2 distro, download the corresponding pixi.toml below and save it as ~/easynav_ws/pixi.toml β€” the same workspace directory used throughout this guide and in Getting Started. Then run:

cd ~/easynav_ws
pixi install
pixi shell

pixi shell opens a shell with ROS 2 and EasyNav ready to use. You can also prefix any command with pixi run instead of entering the shell.

Rolling

pixi.toml

[workspace]
name = "easynav-rolling"
# EasyNav's channel first: Pixi takes each package from the first channel that has it
channels = [
  "https://prefix.dev/fmrico/irl-rolling",
  "https://prefix.dev/robostack-rolling",
  "https://prefix.dev/conda-forge",
]
platforms = ["linux-64"]

[dependencies]
ros-rolling-easynav = "*"

# RoboStack's gz_ros2_control does not set it in this distro: Gazebo would not find the plugin
[activation.env]
GZ_SIM_SYSTEM_PLUGIN_PATH = "$CONDA_PREFIX/lib"

Lyrical

pixi.toml

[workspace]
name = "easynav-lyrical"
# EasyNav's channel first: Pixi takes each package from the first channel that has it
channels = [
  "https://prefix.dev/fmrico/irl-lyrical",
  "https://prefix.dev/robostack-lyrical",
  "https://prefix.dev/conda-forge",
]
platforms = ["linux-64"]

[dependencies]
ros-lyrical-easynav = "*"

Kilted

pixi.toml

[workspace]
name = "easynav-kilted"
# EasyNav's channel first: Pixi takes each package from the first channel that has it
channels = [
  "https://prefix.dev/irl-kilted",
  "https://prefix.dev/robostack-kilted",
  "https://prefix.dev/conda-forge",
]
platforms = ["linux-64"]

[dependencies]
ros-kilted-easynav = "*"

# RoboStack's gz_ros2_control does not set it in this distro: Gazebo would not find the plugin
[activation.env]
GZ_SIM_SYSTEM_PLUGIN_PATH = "$CONDA_PREFIX/lib"

Jazzy

pixi.toml

[workspace]
name = "easynav-jazzy"
# EasyNav's channel first: Pixi takes each package from the first channel that has it
channels = [
  "https://prefix.dev/irl-jazzy",
  "https://prefix.dev/robostack-jazzy",
  "https://prefix.dev/conda-forge",
]
platforms = ["linux-64"]

[dependencies]
ros-jazzy-easynav = "*"

Humble

pixi.toml

[workspace]
name = "easynav-humble"
# EasyNav's channel first: Pixi takes each package from the first channel that has it
channels = [
  "https://prefix.dev/fmrico/irl-humble",
  "https://prefix.dev/robostack-humble",
  "https://prefix.dev/conda-forge",
]
platforms = ["linux-64"]

[dependencies]
ros-humble-easynav = "*"

Installing plugins (Pixi)

Just like with APT, ros-<distro>-easynav in the pixi.toml files above only pulls in the core framework. Controllers, localizers, planners and maps managers live in separate packages β€” browse the full catalogue at EasyNav Plugins β€” and must be added on top with pixi add. For example:

pixi add \
  ros-<distro>-easynav-costmap-maps-manager \
  ros-<distro>-easynav-costmap-localizer \
  ros-<distro>-easynav-costmap-planner \
  ros-<distro>-easynav-regulated-pp-controller

Replace <distro> with your target distro (humble, jazzy, kilted, lyrical or rolling).

Package availability

Every package of EasyNav, its plugins, NavMap (including navmap_tools and navmap_rviz_plugin), yaets, easynav_nav2_bridge and the PlayGrounds is available with APT (humble, jazzy, kilted and lyrical) and Pixi (also rolling), except:

  • The PlayGrounds are not available for humble: their simulation needs the Gazebo vendor packages (gz_sim_vendor) of jazzy and later.

  • easynav_behaviors and the other example packages are only distributed as source (see Getting Started).