EasyNavigation Logo
latest
  • Build & Install
    • Supported platforms
    • Prerequisites
    • Install from binaries (APT)
    • Build from source
      • Workspace layout
      • Clone sources
      • Install dependencies
      • Configure and build
      • Source the overlay
      • Run tests (optional)
    • Common options
    • Troubleshooting
    • Uninstall / clean
    • Next steps
  • Getting Started
    • Overview
    • Workspace layout
    • Repository overview
    • Simulation setup
    • Launching EasyNav
    • Visualizing in RViz2
    • Sending navigation goals
    • Visualizing internal process with the TUI
    • Troubleshooting
    • Next steps
  • EasyNav Plugins
    • Supported ROS 2 versions
    • Repository overview
    • 🧭 Planners
    • βš™οΈ Controllers
    • πŸ—ΊοΈ Maps Managers
    • πŸ“ Localizers
    • License
  • HowTos and Practical Guides
    • πŸ“˜ Overview
    • Simple Stack
      • Mapping with SLAM Toolbox and EasyNav
        • Overview
        • Setup
        • Running SLAM Toolbox
        • Step-by-Step Instructions
        • Using EasyNav to Receive and Save the Map
        • Saving and Reusing the Map
        • Notes
      • Navigating with SimpleStack and EasyNav
        • Overview
        • Creating a Parameter File
        • Running the Simulation
        • Notes
    • Costmap Stack
      • Mapping with the Costmap Stack
        • Setup
        • Overview
        • Example parameters
        • Running and visualizing
        • Saving maps
      • Mapping with SLAM Toolbox and EasyNav
        • Setup
        • Mapping and Preparation
        • Creating a Parameter File
        • Running the Simulation
        • Notes
      • Deploying EasyNav on a Real iCreate3 Robot
        • Setup
        • Hardware Setup
        • ROS 2 Setup on the Raspberry Pi
        • EasyNav Setup on the Raspberry Pi
        • Mapping
        • Navigation
        • Notes
    • GridMap Stack
      • GridMap Mapping with LidarSLAM and EasyNav
        • Setup
        • Overview
        • 1. Start the Simulator
        • 2. Launch LidarSLAM
        • 3. Build the Map with Teleoperation
        • 4. Run the GridMap Builder (PointCloud β†’ GridMap)
        • 5. Run the Gridmap Maps Manager
        • 6. Save the GridMap to Disk
      • Outdoor Navigation with GridMaps (Summit)
        • Overview
        • Setup
        • 1. Launch the Simulator
        • 2. Launch EasyNav with GridMap and LidarSLAM
        • 3. Commanding Navigation Goals
        • Notes
    • Controllers
      • SeReST Controller Fine-Tuning
        • Overview
        • Quick-Start Defaults
        • Core Concepts
        • Parameter-by-Parameter Guidance
        • Troubleshooting by Symptom
        • Recommended Tuning Order
        • FAQ
    • Behaviors
      • Patrolling Behavior
        • Overview
        • Setup
        • Waypoint Configuration
        • Launching Navigation
        • Running the Patrolling Behavior
        • Code Explanation (C++ Version)
        • Notes
    • General
      • Multi-Robot Navigation with EasyNav
        • Overview
        • Setup
        • 1. Topic Naming and TF Management (Plugin developers)
        • 2. Launching in Simulation
        • 3. Example Parameters
        • Tips & Gotchas
  • Developers Guide
    • Core Design and Architecture
      • NavState: The Shared Blackboard
      • Real-Time Execution Model
    • How to use the NavState BlackBoard
      • Overview
      • Basic API
      • Examples from Plugins
      • Advanced Features
      • Best Practices
      • Conclusion
    • Sensor Input and Perception Handling
      • Sensor Configuration
      • Processing Point Perceptions
      • Operation Summary
      • Example: Updating a Map
      • Fused Visualization
      • Extending to Other Modalities
    • Sending Navigation Commands to EasyNav
      • Primary Method: /easynav_control Topic
        • Protocol Description
        • Using GoalManagerClient
      • Secondary Method: /goal_pose Topic
      • Conclusion
    • Overview
    • Further Reading
  • About and Contact
    • About
    • Contact
EasyNavigation
Edit
  • HowTos and Practical Guides
  • Navigating with SimpleStack and EasyNav

Navigating with SimpleStack and EasyNav

This HowTo explains how to perform navigation using the Simple Stack in EasyNavigation (EasyNav). The Simple Stack operates on a binary occupancy map, ideal for lightweight simulations or quick prototyping.

On this page

  • Overview

  • Creating a Parameter File

  • Running the Simulation

  • Notes

Overview

This tutorial assumes you already have a map created with SLAM Toolbox or another mapping method. If you have not yet generated a map, follow Mapping with SLAM Toolbox and EasyNav first.

Once you have your map, save the .yaml and image file (.pgm/.png) in any package within your workspace, such as easynav_indoor_testcase/maps. You will later reference it using the parameters package and map_path_file. (Alternatively, you can use an absolute path with map_path_file alone.)

β€”

Creating a Parameter File

In this example we will use:

  • The SeReST controller for trajectory tracking.

  • The AMCL localizer for probabilistic localization.

  • The Simple Maps Manager to load the occupancy map.

Below is a minimal working configuration for navigation with the Simple Stack.

controller_node:
  ros__parameters:
    use_sim_time: true
    controller_types: [serest]
    serest:
      rt_freq: 30.0
      plugin: easynav_serest_controller/SerestController
      allow_reverse: true
      max_linear_speed: 0.8
      max_angular_speed: 1.2
      v_progress_min: 0.08
      k_s_share_max: 0.5
      k_theta: 2.5
      k_y: 1.5
      goal_pos_tol: 0.1
      goal_yaw_tol_deg: 6.0
      slow_radius: 0.80
      slow_min_speed: 0.02
      final_align_k: 2.5
      final_align_wmax: 0.8
      corner_guard_enable: true
      corner_gain_ey: 1.8
      corner_gain_eth: 0.7
      corner_gain_kappa: 0.4
      corner_min_alpha: 0.35
      corner_boost_omega: 1.0
      a_lat_soft: 0.9
      apex_ey_des: 0.05

localizer_node:
  ros__parameters:
    use_sim_time: true
    localizer_types: [simple]
    simple:
      rt_freq: 50.0
      freq: 5.0
      reseed_freq: 1.0
      plugin: easynav_simple_localizer/AMCLLocalizer
      num_particles: 100
      noise_translation: 0.05
      noise_rotation: 0.1
      noise_translation_to_rotation: 0.1
      initial_pose:
        x: 0.0
        y: 0.0
        yaw: 0.0
        std_dev_xy: 0.1
        std_dev_yaw: 0.01

maps_manager_node:
  ros__parameters:
    use_sim_time: true
    map_types: [simple]
    simple:
      freq: 10.0
      plugin: easynav_simple_maps_manager/SimpleMapsManager
      package: easynav_indoor_testcase
      map_path_file: maps/home.yaml

planner_node:
  ros__parameters:
    use_sim_time: true
    planner_types: [simple]
    simple:
      freq: 0.5
      plugin: easynav_simple_planner/SimplePlanner
      robot_radius: 0.25

sensors_node:
  ros__parameters:
    use_sim_time: true
    forget_time: 0.5
    sensors: [laser1]
    perception_default_frame: odom
    laser1:
      topic: scan_raw
      type: sensor_msgs/msg/LaserScan
      group: points

system_node:
  ros__parameters:
    use_sim_time: true
    position_tolerance: 0.3
    angle_tolerance: 0.15

β€”

Running the Simulation

  1. Launch the simulator You can disable the GUI to save computational resources:

    ros2 launch easynav_playground_kobuki playground_kobuki.launch.py gui:=false
    
  2. Open RViz2 in a new terminal:

    ros2 run rviz2 rviz2 --ros-args -p use_sim_time:=true
    
  3. Start EasyNav with your parameter file:

    ros2 run easynav_system system_main \
       --ros-args --params-file ~/easynav_ws/src/easynav_indoor_testcase/robots_params/simple.serest_params.yaml
    

    (You can also create a launcher for convenience.)

  4. Send navigation goals In RViz2, use the β€œ2D Goal Pose” tool to send target positions. The robot will autonomously plan and navigate toward them.

β€”

Notes

  • The Simple Stack uses a binary map: cells are free or occupied (no graded cost).

  • For smoother paths or cost-aware planning, use the Costmap Stack (Mapping with the Costmap Stack).

  • Verify that map_path_file and package point to the correct files.

  • You can tune controller parameters (k_theta, k_y, etc.) and speed limits for better performance.


© Copyright 2025, Various.