|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.3.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | kilted |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.3.0 (2025-12-01)
- Add README.md with base classes description
- Set collision checker disabled by default
- Cleanup unused headers
- Reshape execution and sensor handling
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged easynav_core at Robotics Stack Exchange
|
easynav_core package from easynav repoeasynav easynav_common easynav_controller easynav_core easynav_interfaces easynav_localizer easynav_maps_manager easynav_planner easynav_sensors easynav_support_py easynav_system easynav_tools |
ROS Distro
|
Package Summary
| Version | 0.2.0 |
| License | GPL-3.0-only |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/EasyNavigation/EasyNavigation.git |
| VCS Type | git |
| VCS Version | jazzy |
| Last Updated | 2025-12-03 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
- Esther Aguado González
- Juan Sebastián Cely Gutiérrez
- José Miguel Guerrero Hernández
Authors
- Francisco Martín Rico
- Francisco Miguel Moreno Olivo
easynav_core
Core base classes for all Easy Navigation method plugins (controllers, planners, localizers, map managers).
This package provides a common lifecycle, timing utilities, and (for some bases) shared behaviors like collision checking.
Base Classes Overview
| Base Class | Header | Typical Derived Plugins |
|---|---|---|
easynav::MethodBase |
easynav_core/MethodBase.hpp |
All method plugins (controllers, planners, localizers, maps managers) |
easynav::ControllerMethodBase |
easynav_core/ControllerMethodBase.hpp |
easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller, … |
easynav::PlannerMethodBase |
easynav_core/PlannerMethodBase.hpp |
easynav_costmap_planner, easynav_navmap_planner, easynav_simple_planner, … |
easynav::LocalizerMethodBase |
easynav_core/LocalizerMethodBase.hpp |
easynav_costmap_localizer, easynav_navmap_localizer, easynav_simple_localizer, … |
easynav::MapsManagerBase |
easynav_core/MapsManagerBase.hpp |
easynav_costmap_maps_manager, easynav_navmap_maps_manager, easynav_simple_maps_manager, … |
Each plugin README in easynav_plugins can refer to these sections instead of duplicating the shared behavior.
easynav::MethodBase
Header: easynav_core/MethodBase.hpp
Role: Common lifecycle and timing utilities for all method plugins.
MethodBase Responsibilities
- Store a pointer to the parent
rclcpp_lifecycle::LifecycleNode. - Keep the plugin name and TF prefix.
- Provide
initialize()+ virtualon_initialize()hook for derived classes. - Provide update-rate helpers for real-time and non-real-time loops.
Parameters
All parameters are declared under each derived plugin namespace; MethodBase just expects them to exist. Typical parameters (declared by derived classes) include:
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.rt_frequency |
double |
implementation-specific | Desired real-time loop frequency (Hz). Used by isTime2RunRT(). |
<plugin>.frequency |
double |
implementation-specific | Desired non-RT loop frequency (Hz). Used by isTime2Run(). |
Note: The exact parameter names and defaults are defined in each derived plugin;
MethodBaseonly consumes the configured frequencies.
MethodBase Public API
| Method | Description |
|---|---|
initialize(parent_node, plugin_name, tf_prefix) |
Stores node pointer, plugin name and TF prefix, reads frequencies, and calls on_initialize(). |
on_initialize() |
Virtual hook for derived classes to perform extra setup (declare parameters, create pubs/subs, etc.). |
get_node() |
Returns shared pointer to parent lifecycle node. |
get_plugin_name() |
Returns the plugin identifier used for namespacing parameters and logs. |
get_tf_prefix() |
Returns the TF namespace (with trailing /). |
isTime2RunRT() |
Returns true if enough time has elapsed to run a real-time update. |
isTime2Run() |
Returns true if enough time has elapsed to run a non-RT update. |
setRunRT() / setRun()
|
Mark that an RT / non-RT iteration has just been executed. |
get_last_rt_execution_ts() / get_last_execution_ts()
|
Access the last execution timestamps. |
NavState / Topics
MethodBase itself does not read or write NavState and does not create publishers or subscriptions. All such interfaces are defined in derived base classes (see below) and their plugins.
easynav::ControllerMethodBase
Header: easynav_core/ControllerMethodBase.hpp
Role: Base class for controllers that generate velocity commands and optionally perform collision checking.
Typical derived plugins: easynav_simple_controller, easynav_mppi_controller, easynav_serest_controller, easynav_vff_controller.
Controller Responsibilities
- Extend
MethodBasewith a real-time control loop (update_rt). - Provide a standard collision-checking utility based on point clouds.
- Optionally publish visualization markers for the collision zone.
Parameters (common collision checker)
Derived controllers usually expose these parameters (names may vary slightly per plugin):
| Name | Type | Default | Description |
|---|---|---|---|
<plugin>.debug_markers |
bool |
false |
Enable/disable publication of collision debug markers. |
<plugin>.active |
bool |
false |
Enable/disable collision checking. |
<plugin>.robot_radius |
double |
0.35 |
Robot radius used to compute safety distances (m). |
<plugin>.robot_height |
double |
0.5 |
Vertical extent of the robot for point cloud filtering (m). |
<plugin>.z_min_filter |
double |
0.0 |
Minimum Z to keep points in the collision check (m). |
<plugin>.brake_acc |
double |
0.5 |
Maximum braking deceleration used to compute stopping distance (m/s²). |
<plugin>.safety_margin |
double |
0.1 |
Extra margin added to the braking distance (m). |
<plugin>.downsample_leaf_size |
double |
0.1 |
Voxel leaf size for downsampling the collision point cloud (m). |
<plugin>.motion_frame |
string |
"base_footprint" |
Frame where collision region and points are evaluated. |
(Exact declaration and defaults live in each controller plugin; this section documents the shared semantics.)
Interfaces (Topics)
| Direction | Topic | Type | Purpose |
|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/collision_zone |
visualization_msgs/msg/MarkerArray |
Publishes collision region and filtered points for debugging. |
The actual topic name is built inside the controller plugin using get_node() and get_plugin_name(), but all controllers sharing ControllerMethodBase use a similar pattern.
File truncated at 100 lines see the full file
Changelog for package easynav_core
0.2.0 (2025-12-01)
- Add README.md with base classes description
- Remove unused include and random
- Set collision checker disabled by default
- Cleanup unused headers
- Add warning when exceeding the target cycle time
- Finished collision checker
- Reset method execution time when triggered
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno
0.1.4 (2025-10-16)
- Merge kilted version bump into rolling
- Merge kilted into rolling. Update version to 0.1.3
- Contributors: Francisco Miguel Moreno
0.1.3 (2025-10-12)
0.1.2 (2025-09-26)
- Trigger planner if new goals appear
- Multi-robot support by namespacing TFs
- Use tf_prefix instead of tf_namespace
- [WIP] Blackboard for NavSate
- Redesing with NavState
- Yaets traces
- Fix CMake targets. Update package dependencies
- Install bins in correct place
- Updated Doxygen description headers
- [WIP] System Execution
- RTTFBuffer. Dictionary maps.
- [WIP] Changes to load plugins
- Changes to load plugins
- NavState refs in update
- Base interfaces for module algorithms
- Works on Map Manager Types
- Add tests for easynav_core base classes
- Group common method functionality
- Add dummy plugins for core modules
- Install runtime binary targets under lib
- Add base abstract classes for the algorithm plugins
- Refactoring to nodes
- Minor typo in license
- Add Result Class
- Reading params to core
- Separation ROS and non-ROS and skeletons
- Initial skeleton
- Contributors: Francisco Martín Rico, Francisco Miguel Moreno Olivo, Juan Carlos Manzanares Serrano
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_lint_auto | |
| ament_lint_common | |
| ament_cmake_gtest | |
| rclcpp_lifecycle | |
| easynav_common | |
| visualization_msgs | |
| tf2_ros | |
| pcl_ros | |
| tf2_geometry_msgs |