Getting Started
To get started with EasyNav, we will use a simple example: a Turtlebot2 robot navigating in a domestic environment.
Create your workspace and move to the src directory:
mkdir -p easynav_ws/src
cd easynav_ws/src
Clone the required repositories for this example:
git clone --recursive https://github.com/EasyNavigation/EasyNavigation.git
git clone https://github.com/EasyNavigation/easynav_simple_stack.git
git clone https://github.com/EasyNavigation/easynav_playground_kobuki.git
git clone https://github.com/EasyNavigation/easynav_indoor_testcase.git
The EasyNavigation repository contains the core framework of EasyNav.
The easynav_simple_stack repository provides a collection of plugins for a basic navigation stack. This stack is characterized by its use of a 2D occupancy grid, where each cell can be either free (0) or occupied (1).
The easynav_playground_kobuki repository includes everything needed to simulate a Turtlebot2 robot, also known as Kobuki.
The easynav_indoor_testcase repository provides you with maps and param files for some test cases.
Some of these repositories specify additional dependencies via .repos files. To retrieve all third-party dependencies, run:
vcs import . < easynav_playground_kobuki/thirdparty.repos
Install dependencies and build the workspace:
cd .. # go back to easynav_ws
rosdep install --from-paths src --ignore-src -r -y
reset && colcon build --symlink-install
source install/setup.bash
Launch the simulator
To start the simulation, run:
ros2 launch easynav_playground_kobuki playground_kobuki.launch.py
This command launches a Gazebo simulation of a Turtlebot2 robot in a domestic environment.

If you want to launch the simulator without its graphical interface (useful to save computational resources), you can disable the GUI with the gui:=false argument:
ros2 launch easynav_playground_kobuki playground_kobuki.launch.py gui:=false
When used together with RViz2, visualizing the simulation is not strictly necessary.
Launch EasyNav
Keep the simulator running.
Open a new terminal to launch the EasyNav system. EasyNav is launched through a single executable, where you pass a parameter file indicating which plugins to load for each module:
ros2 run easynav_system system_main --ros-args --params-file ~/easynav_ws/src/easynav_indoor_testcase/robots_params/simple.params.yaml
In another terminal, open RViz2:
ros2 run rviz2 rviz2 --ros-args -p use_sim_time:=true

In RViz2, add the visualizations shown in the figure above. Make sure to set the QoS of the map topic to Transient Local so the map is correctly displayed.
Once RViz2 is properly configured, you can use the “2D Goal Pose” tool (located in the top toolbar) to send navigation goals to the robot. Click on a location in the map to make the robot navigate there autonomously.

Congratulations! 🎉
If you have reached this point successfully, you now have EasyNav up and running!
You are ready to start experimenting with navigation stacks, environment representations, and advanced behaviors. Check the following sections to explore more use cases and configuration options.