|
EasyNav Plugins
|

Directories | |
| include | |
| src | |
"" "" "" "" "" "" "" ""
A planner plugin implementing a standard A* path planner over a Costmap2D representation. It reads the dynamic costmap, goal list, and robot pose from NavState and publishes a computed path as a nav_msgs/Path message.
| Distribution | Status |
|---|---|
| humble | |
| jazzy | |
| kilted | |
| rolling |
All parameters are declared under the plugin namespace, i.e., /<node_fqn>/easynav_costmap_planner/CostmapPlanner/....
| Name | Type | Default | Description |
|---|---|---|---|
| <plugin>.cost_factor | double | 2.0 | Scaling factor applied to costmap cell values to compute traversal costs. Higher values make high-cost cells much less attractive. |
| <plugin>.inflation_penalty | double | 5.0 | Extra penalty added to inflated/near-obstacle cells to push paths away from obstacles. |
| <plugin>.heuristic_scale | double | 1.0 | Scaling factor applied to the A* heuristic term. Controls the trade-off between following the cheapest route vs. going more directly. |
| <plugin>.continuous_replan | bool | true | If true, re-plans continuously as the map/goal changes; if false, plans once per request. |
The planner uses a per-step traversal cost:
$$ g_{\text{new}} = g_{\text{current}} + \text{step_cost} \cdot \left(1 + \text{cost_factor} \cdot \frac{\text{cell_cost}}{\text{LETHAL_OBSTACLE}}\right) $$
The A* priority is:
$$ f = g + h, \quad h = \text{heuristic_scale} \cdot d_{\text{cells}}(\text{current}, \text{goal}) $$
where $d_{\text{cells}}$ is the Euclidean distance in cell indices (not metric distance, but proportional).
Typical tuning strategy:
| Direction | Topic | Type | Purpose | QoS |
|---|---|---|---|---|
| Publisher | <node_fqn>/<plugin>/path | nav_msgs/msg/Path | Publishes the computed path from start to goal. | depth=10 |
This plugin does not create subscriptions or services directly; it reads inputs via NavState.
| Key | Type | Access | Notes |
|---|---|---|---|
| goals | nav_msgs::msg::Goals | Read | Goal list used as planner targets. |
| map.dynamic | Costmap2D | Read | Dynamic costmap used for A* search. |
| robot_pose | nav_msgs::msg::Odometry | Read | Current robot pose used as the start position. |
| path | nav_msgs::msg::Path | Write | Output path to follow. |
| Role | Transform | Notes |
|---|---|---|
| Reads | map -> base_footprint | Requires consistent frames between the costmap and the published path. |
Apache-2.0