Package Summary

Version 2.4.0
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-04-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS Path Planner with A* in TP-Space Engine

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco
  • Shravan S Rai

Authors

  • Shravan_S_Rai
  • Jose-Luis Blanco-Claraco

mrpt_tps_astar_planner

Overview

This package provides a ROS 2 node that uses the PTG-based A* planner from mrpt_path_planning to compute collision-free waypoint sequences for a non-holonomic robot, respecting its real shape, orientation, and kinematic constraints.

Planning is performed on a SE(2) lattice using Parameterized Trajectory Generator (PTG) families that encode the robot’s motion primitives. The result is published as a mrpt_msgs/WaypointSequence (and a nav_msgs/Path for visualization) and/or returned as the response of a ROS 2 service call.

The node supports concurrent service requests: each executor thread owns a lazily-initialized planner instance, so multiple clients can request plans simultaneously without blocking each other.

How to cite

TBD!

Configuration

Key configuration files passed as ROS 2 parameters:

Parameter Description
ptg_ini INI file describing PTG families (robot kinematics)
planner_parameters YAML file with A* algorithm parameters
global_costmap_parameters YAML file for costmap obstacle-inflation parameters
prefer_waypoints_parameters YAML file for waypoint-preference cost weights

Demos

See the path-planner-sandbox/ subdirectory for standalone test scripts and sample maps.

Node: mrpt_tps_astar_planner_node

Working rationale

  1. Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
  2. On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
  3. The planned path is interpolated at a fixed time step and converted to a WaypointSequence.

The A* implementation is an anytime algorithm: it improves the solution while time allows, then returns the best found. An optional refinement pass (astar_skip_refine: false) further smooths the result.

ROS 2 parameters

Parameter Default Description
show_gui false Open an MRPT 3D window showing maps and the planned path
frame_id_map map TF frame of the global map
frame_id_robot base_link TF frame of the robot
topic_goal_sub tps_astar_nav_goal geometry_msgs/PoseStamped goal subscription
topic_obstacles_gridmap_sub (empty) Comma-separated occupancy-grid topics for obstacles
topic_obstacles_sub (empty) Comma-separated PointCloud2 topics for obstacles
topic_static_maps /map Subset of the above topics to subscribe with transient-local QoS
topic_wp_seq_pub /waypoints Topic on which to publish the resulting waypoint sequence
topic_costmaps_pub /costmap Prefix for costmap debug publishers
ptg_ini (required) Path to PTG .ini file
planner_parameters (required) Path to planner YAML file
global_costmap_parameters (required) Path to costmap YAML file
prefer_waypoints_parameters (required) Path to waypoint-preference YAML file
problem_world_bbox_margin 2.0 Extra margin [m] added around the planning bounding box
problem_world_bbox_ignore_obstacles false If true, obstacle extents are excluded from the bounding box
astar_skip_refine false If true, skip the post-A* trajectory refinement pass
mid_waypoints_allowed_distance 0.5 Acceptance radius [m] for intermediate waypoints
final_waypoint_allowed_distance 0.4 Acceptance radius [m] for the goal waypoint
mid_waypoints_allow_skip true Whether intermediate waypoints may be skipped
final_waypoint_allow_skip false Whether the final waypoint may be skipped
mid_waypoints_ignore_heading false Whether heading is ignored at intermediate waypoints
final_waypoint_ignore_heading false Whether heading is ignored at the final waypoint

Subscribed topics

Topic Type Description
<topic_goal_sub> geometry_msgs/PoseStamped Goal pose; triggers a plan from current TF robot pose
<topic_obstacles_gridmap_sub> (one per entry) nav_msgs/OccupancyGrid Occupancy grid(s) used as static obstacles
<topic_obstacles_sub> (one per entry) sensor_msgs/PointCloud2 Point cloud(s) used as dynamic obstacles

Published topics

Topic Type Description
<topic_wp_seq_pub> (default /waypoints) mrpt_msgs/WaypointSequence Full waypoint sequence with per-waypoint tolerances and flags
<topic_wp_seq_pub>_path (default /waypoints_path) nav_msgs/Path Same path as nav_msgs/Path, mainly for RViz visualization
<topic_costmaps_pub>_0, _1, … nav_msgs/OccupancyGrid Inflated costmaps (one per obstacle source), published after each plan

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.4.0 (2026-04-19)

  • Merge pull request #158 from mrpt-ros-pkg/feat/parallel-planner Implement parallel A* planner; misc bug and style fixes

  • Fix QoS type usage

  • astar planner: made reentrant for serving multiple service calls in multithread

  • Improve readme

  • fix(tps_astar_planner): fix crashes, null deref, and minor log bugs

    - Replace ASSERT_(robot_pose_ok) with graceful error+return in both callback_goal and srv_make_plan_to, so a temporary TF outage does not abort the node or throw inside a service callback.

    - Add null guards before using e.grid_obstacles / e.obstacle_points in do_path_plan() and init_3d_debug() — both can be nullptr if the respective topic callback has not fired yet.

    - Call init_3d_debug() from do_path_plan() when gui_mrpt_ is true, so the 3D window is actually opened (was dead code).

    - Protect pub_costmaps_ resize and lazy publisher creation with pub_costmaps_cs_ mutex.

    - Fix copy-paste error: srv_make_plan_from_to catch block logged wrong function name.

    • Fix log format string: "topic_wp_seq_pub%s" -> "topic_wp_seq_pub: %s".

    - Launch file: lowercase 'false' for problem_world_bbox_ignore_obstacles and astar_skip_refine boolean args (was Python-cased 'False').

  • Contributors: Jose Luis Blanco-Claraco

2.3.1 (2026-04-02)

2.3.0 (2025-10-26)

2.2.4 (2025-07-24)

2.2.3 (2025-07-22)

  • FIX: Build against recent tf2 versions
  • Contributors: Jose Luis Blanco-Claraco

2.2.2 (2025-05-28)

  • FIX: remove usage of obsolete ament_target_dependencies()
  • Merge pull request #156 from r-aguilera/ros2 mrpt_tps_astar_planner_node: improves on obstacle points update
  • astar_planner: limit excessive obstacle points ... logging
  • astar_planner: prevent node from shutting down ... on missing tf info
  • astar planner node: it will always return the best found path, even if success==false
  • Merge pull request #155 from r-aguilera/ros2 Fix MakePlanFromTo srv using robot pose as start
  • Fix MakePlanFromTo srv using robot pose as start
  • Contributors: Jose Luis Blanco-Claraco, Raúl Aguilera

2.2.1 (2024-10-12)

  • Update demo for astar
  • Publish costmaps to ROS for visualization too apart of the custom MRPT GUI
  • Improve astar navigation demo
  • astar planner: add refine() step and parameter to optionally disable it
  • astar node: add two more launch args: problem_world_bbox_margin and problem_world_bbox_ignore_obstacles
  • astar params: add more comments and tune for speed
  • PTGs .ini: Add docs on how to enable backward motions
  • Contributors: Jose Luis Blanco-Claraco

2.2.0 (2024-09-25)

  • fix missing linters; tune tutorial params
  • Update URL entries in package.xml to each package proper documentation
  • ament linters: manually enable just cmake and xml linters
  • Add roslog INFO traces to measure time spent initializing PTGs
  • reformat clang-format with 100 column width
  • Contributors: Jose Luis Blanco-Claraco

2.1.1 (2024-09-02)

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange

Package Summary

Version 2.4.0
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-04-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS Path Planner with A* in TP-Space Engine

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco
  • Shravan S Rai

Authors

  • Shravan_S_Rai
  • Jose-Luis Blanco-Claraco

mrpt_tps_astar_planner

Overview

This package provides a ROS 2 node that uses the PTG-based A* planner from mrpt_path_planning to compute collision-free waypoint sequences for a non-holonomic robot, respecting its real shape, orientation, and kinematic constraints.

Planning is performed on a SE(2) lattice using Parameterized Trajectory Generator (PTG) families that encode the robot’s motion primitives. The result is published as a mrpt_msgs/WaypointSequence (and a nav_msgs/Path for visualization) and/or returned as the response of a ROS 2 service call.

The node supports concurrent service requests: each executor thread owns a lazily-initialized planner instance, so multiple clients can request plans simultaneously without blocking each other.

How to cite

TBD!

Configuration

Key configuration files passed as ROS 2 parameters:

Parameter Description
ptg_ini INI file describing PTG families (robot kinematics)
planner_parameters YAML file with A* algorithm parameters
global_costmap_parameters YAML file for costmap obstacle-inflation parameters
prefer_waypoints_parameters YAML file for waypoint-preference cost weights

Demos

See the path-planner-sandbox/ subdirectory for standalone test scripts and sample maps.

Node: mrpt_tps_astar_planner_node

Working rationale

  1. Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
  2. On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
  3. The planned path is interpolated at a fixed time step and converted to a WaypointSequence.

The A* implementation is an anytime algorithm: it improves the solution while time allows, then returns the best found. An optional refinement pass (astar_skip_refine: false) further smooths the result.

ROS 2 parameters

Parameter Default Description
show_gui false Open an MRPT 3D window showing maps and the planned path
frame_id_map map TF frame of the global map
frame_id_robot base_link TF frame of the robot
topic_goal_sub tps_astar_nav_goal geometry_msgs/PoseStamped goal subscription
topic_obstacles_gridmap_sub (empty) Comma-separated occupancy-grid topics for obstacles
topic_obstacles_sub (empty) Comma-separated PointCloud2 topics for obstacles
topic_static_maps /map Subset of the above topics to subscribe with transient-local QoS
topic_wp_seq_pub /waypoints Topic on which to publish the resulting waypoint sequence
topic_costmaps_pub /costmap Prefix for costmap debug publishers
ptg_ini (required) Path to PTG .ini file
planner_parameters (required) Path to planner YAML file
global_costmap_parameters (required) Path to costmap YAML file
prefer_waypoints_parameters (required) Path to waypoint-preference YAML file
problem_world_bbox_margin 2.0 Extra margin [m] added around the planning bounding box
problem_world_bbox_ignore_obstacles false If true, obstacle extents are excluded from the bounding box
astar_skip_refine false If true, skip the post-A* trajectory refinement pass
mid_waypoints_allowed_distance 0.5 Acceptance radius [m] for intermediate waypoints
final_waypoint_allowed_distance 0.4 Acceptance radius [m] for the goal waypoint
mid_waypoints_allow_skip true Whether intermediate waypoints may be skipped
final_waypoint_allow_skip false Whether the final waypoint may be skipped
mid_waypoints_ignore_heading false Whether heading is ignored at intermediate waypoints
final_waypoint_ignore_heading false Whether heading is ignored at the final waypoint

Subscribed topics

Topic Type Description
<topic_goal_sub> geometry_msgs/PoseStamped Goal pose; triggers a plan from current TF robot pose
<topic_obstacles_gridmap_sub> (one per entry) nav_msgs/OccupancyGrid Occupancy grid(s) used as static obstacles
<topic_obstacles_sub> (one per entry) sensor_msgs/PointCloud2 Point cloud(s) used as dynamic obstacles

Published topics

Topic Type Description
<topic_wp_seq_pub> (default /waypoints) mrpt_msgs/WaypointSequence Full waypoint sequence with per-waypoint tolerances and flags
<topic_wp_seq_pub>_path (default /waypoints_path) nav_msgs/Path Same path as nav_msgs/Path, mainly for RViz visualization
<topic_costmaps_pub>_0, _1, … nav_msgs/OccupancyGrid Inflated costmaps (one per obstacle source), published after each plan

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.4.0 (2026-04-19)

  • Merge pull request #158 from mrpt-ros-pkg/feat/parallel-planner Implement parallel A* planner; misc bug and style fixes

  • Fix QoS type usage

  • astar planner: made reentrant for serving multiple service calls in multithread

  • Improve readme

  • fix(tps_astar_planner): fix crashes, null deref, and minor log bugs

    - Replace ASSERT_(robot_pose_ok) with graceful error+return in both callback_goal and srv_make_plan_to, so a temporary TF outage does not abort the node or throw inside a service callback.

    - Add null guards before using e.grid_obstacles / e.obstacle_points in do_path_plan() and init_3d_debug() — both can be nullptr if the respective topic callback has not fired yet.

    - Call init_3d_debug() from do_path_plan() when gui_mrpt_ is true, so the 3D window is actually opened (was dead code).

    - Protect pub_costmaps_ resize and lazy publisher creation with pub_costmaps_cs_ mutex.

    - Fix copy-paste error: srv_make_plan_from_to catch block logged wrong function name.

    • Fix log format string: "topic_wp_seq_pub%s" -> "topic_wp_seq_pub: %s".

    - Launch file: lowercase 'false' for problem_world_bbox_ignore_obstacles and astar_skip_refine boolean args (was Python-cased 'False').

  • Contributors: Jose Luis Blanco-Claraco

2.3.1 (2026-04-02)

2.3.0 (2025-10-26)

2.2.4 (2025-07-24)

2.2.3 (2025-07-22)

  • FIX: Build against recent tf2 versions
  • Contributors: Jose Luis Blanco-Claraco

2.2.2 (2025-05-28)

  • FIX: remove usage of obsolete ament_target_dependencies()
  • Merge pull request #156 from r-aguilera/ros2 mrpt_tps_astar_planner_node: improves on obstacle points update
  • astar_planner: limit excessive obstacle points ... logging
  • astar_planner: prevent node from shutting down ... on missing tf info
  • astar planner node: it will always return the best found path, even if success==false
  • Merge pull request #155 from r-aguilera/ros2 Fix MakePlanFromTo srv using robot pose as start
  • Fix MakePlanFromTo srv using robot pose as start
  • Contributors: Jose Luis Blanco-Claraco, Raúl Aguilera

2.2.1 (2024-10-12)

  • Update demo for astar
  • Publish costmaps to ROS for visualization too apart of the custom MRPT GUI
  • Improve astar navigation demo
  • astar planner: add refine() step and parameter to optionally disable it
  • astar node: add two more launch args: problem_world_bbox_margin and problem_world_bbox_ignore_obstacles
  • astar params: add more comments and tune for speed
  • PTGs .ini: Add docs on how to enable backward motions
  • Contributors: Jose Luis Blanco-Claraco

2.2.0 (2024-09-25)

  • fix missing linters; tune tutorial params
  • Update URL entries in package.xml to each package proper documentation
  • ament linters: manually enable just cmake and xml linters
  • Add roslog INFO traces to measure time spent initializing PTGs
  • reformat clang-format with 100 column width
  • Contributors: Jose Luis Blanco-Claraco

2.1.1 (2024-09-02)

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange

Package Summary

Version 2.4.0
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-04-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS Path Planner with A* in TP-Space Engine

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco
  • Shravan S Rai

Authors

  • Shravan_S_Rai
  • Jose-Luis Blanco-Claraco

mrpt_tps_astar_planner

Overview

This package provides a ROS 2 node that uses the PTG-based A* planner from mrpt_path_planning to compute collision-free waypoint sequences for a non-holonomic robot, respecting its real shape, orientation, and kinematic constraints.

Planning is performed on a SE(2) lattice using Parameterized Trajectory Generator (PTG) families that encode the robot’s motion primitives. The result is published as a mrpt_msgs/WaypointSequence (and a nav_msgs/Path for visualization) and/or returned as the response of a ROS 2 service call.

The node supports concurrent service requests: each executor thread owns a lazily-initialized planner instance, so multiple clients can request plans simultaneously without blocking each other.

How to cite

TBD!

Configuration

Key configuration files passed as ROS 2 parameters:

Parameter Description
ptg_ini INI file describing PTG families (robot kinematics)
planner_parameters YAML file with A* algorithm parameters
global_costmap_parameters YAML file for costmap obstacle-inflation parameters
prefer_waypoints_parameters YAML file for waypoint-preference cost weights

Demos

See the path-planner-sandbox/ subdirectory for standalone test scripts and sample maps.

Node: mrpt_tps_astar_planner_node

Working rationale

  1. Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
  2. On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
  3. The planned path is interpolated at a fixed time step and converted to a WaypointSequence.

The A* implementation is an anytime algorithm: it improves the solution while time allows, then returns the best found. An optional refinement pass (astar_skip_refine: false) further smooths the result.

ROS 2 parameters

Parameter Default Description
show_gui false Open an MRPT 3D window showing maps and the planned path
frame_id_map map TF frame of the global map
frame_id_robot base_link TF frame of the robot
topic_goal_sub tps_astar_nav_goal geometry_msgs/PoseStamped goal subscription
topic_obstacles_gridmap_sub (empty) Comma-separated occupancy-grid topics for obstacles
topic_obstacles_sub (empty) Comma-separated PointCloud2 topics for obstacles
topic_static_maps /map Subset of the above topics to subscribe with transient-local QoS
topic_wp_seq_pub /waypoints Topic on which to publish the resulting waypoint sequence
topic_costmaps_pub /costmap Prefix for costmap debug publishers
ptg_ini (required) Path to PTG .ini file
planner_parameters (required) Path to planner YAML file
global_costmap_parameters (required) Path to costmap YAML file
prefer_waypoints_parameters (required) Path to waypoint-preference YAML file
problem_world_bbox_margin 2.0 Extra margin [m] added around the planning bounding box
problem_world_bbox_ignore_obstacles false If true, obstacle extents are excluded from the bounding box
astar_skip_refine false If true, skip the post-A* trajectory refinement pass
mid_waypoints_allowed_distance 0.5 Acceptance radius [m] for intermediate waypoints
final_waypoint_allowed_distance 0.4 Acceptance radius [m] for the goal waypoint
mid_waypoints_allow_skip true Whether intermediate waypoints may be skipped
final_waypoint_allow_skip false Whether the final waypoint may be skipped
mid_waypoints_ignore_heading false Whether heading is ignored at intermediate waypoints
final_waypoint_ignore_heading false Whether heading is ignored at the final waypoint

Subscribed topics

Topic Type Description
<topic_goal_sub> geometry_msgs/PoseStamped Goal pose; triggers a plan from current TF robot pose
<topic_obstacles_gridmap_sub> (one per entry) nav_msgs/OccupancyGrid Occupancy grid(s) used as static obstacles
<topic_obstacles_sub> (one per entry) sensor_msgs/PointCloud2 Point cloud(s) used as dynamic obstacles

Published topics

Topic Type Description
<topic_wp_seq_pub> (default /waypoints) mrpt_msgs/WaypointSequence Full waypoint sequence with per-waypoint tolerances and flags
<topic_wp_seq_pub>_path (default /waypoints_path) nav_msgs/Path Same path as nav_msgs/Path, mainly for RViz visualization
<topic_costmaps_pub>_0, _1, … nav_msgs/OccupancyGrid Inflated costmaps (one per obstacle source), published after each plan

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.4.0 (2026-04-19)

  • Merge pull request #158 from mrpt-ros-pkg/feat/parallel-planner Implement parallel A* planner; misc bug and style fixes

  • Fix QoS type usage

  • astar planner: made reentrant for serving multiple service calls in multithread

  • Improve readme

  • fix(tps_astar_planner): fix crashes, null deref, and minor log bugs

    - Replace ASSERT_(robot_pose_ok) with graceful error+return in both callback_goal and srv_make_plan_to, so a temporary TF outage does not abort the node or throw inside a service callback.

    - Add null guards before using e.grid_obstacles / e.obstacle_points in do_path_plan() and init_3d_debug() — both can be nullptr if the respective topic callback has not fired yet.

    - Call init_3d_debug() from do_path_plan() when gui_mrpt_ is true, so the 3D window is actually opened (was dead code).

    - Protect pub_costmaps_ resize and lazy publisher creation with pub_costmaps_cs_ mutex.

    - Fix copy-paste error: srv_make_plan_from_to catch block logged wrong function name.

    • Fix log format string: "topic_wp_seq_pub%s" -> "topic_wp_seq_pub: %s".

    - Launch file: lowercase 'false' for problem_world_bbox_ignore_obstacles and astar_skip_refine boolean args (was Python-cased 'False').

  • Contributors: Jose Luis Blanco-Claraco

2.3.1 (2026-04-02)

2.3.0 (2025-10-26)

2.2.4 (2025-07-24)

2.2.3 (2025-07-22)

  • FIX: Build against recent tf2 versions
  • Contributors: Jose Luis Blanco-Claraco

2.2.2 (2025-05-28)

  • FIX: remove usage of obsolete ament_target_dependencies()
  • Merge pull request #156 from r-aguilera/ros2 mrpt_tps_astar_planner_node: improves on obstacle points update
  • astar_planner: limit excessive obstacle points ... logging
  • astar_planner: prevent node from shutting down ... on missing tf info
  • astar planner node: it will always return the best found path, even if success==false
  • Merge pull request #155 from r-aguilera/ros2 Fix MakePlanFromTo srv using robot pose as start
  • Fix MakePlanFromTo srv using robot pose as start
  • Contributors: Jose Luis Blanco-Claraco, Raúl Aguilera

2.2.1 (2024-10-12)

  • Update demo for astar
  • Publish costmaps to ROS for visualization too apart of the custom MRPT GUI
  • Improve astar navigation demo
  • astar planner: add refine() step and parameter to optionally disable it
  • astar node: add two more launch args: problem_world_bbox_margin and problem_world_bbox_ignore_obstacles
  • astar params: add more comments and tune for speed
  • PTGs .ini: Add docs on how to enable backward motions
  • Contributors: Jose Luis Blanco-Claraco

2.2.0 (2024-09-25)

  • fix missing linters; tune tutorial params
  • Update URL entries in package.xml to each package proper documentation
  • ament linters: manually enable just cmake and xml linters
  • Add roslog INFO traces to measure time spent initializing PTGs
  • reformat clang-format with 100 column width
  • Contributors: Jose Luis Blanco-Claraco

2.1.1 (2024-09-02)

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange

Package Summary

Version 2.4.0
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-04-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS Path Planner with A* in TP-Space Engine

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco
  • Shravan S Rai

Authors

  • Shravan_S_Rai
  • Jose-Luis Blanco-Claraco

mrpt_tps_astar_planner

Overview

This package provides a ROS 2 node that uses the PTG-based A* planner from mrpt_path_planning to compute collision-free waypoint sequences for a non-holonomic robot, respecting its real shape, orientation, and kinematic constraints.

Planning is performed on a SE(2) lattice using Parameterized Trajectory Generator (PTG) families that encode the robot’s motion primitives. The result is published as a mrpt_msgs/WaypointSequence (and a nav_msgs/Path for visualization) and/or returned as the response of a ROS 2 service call.

The node supports concurrent service requests: each executor thread owns a lazily-initialized planner instance, so multiple clients can request plans simultaneously without blocking each other.

How to cite

TBD!

Configuration

Key configuration files passed as ROS 2 parameters:

Parameter Description
ptg_ini INI file describing PTG families (robot kinematics)
planner_parameters YAML file with A* algorithm parameters
global_costmap_parameters YAML file for costmap obstacle-inflation parameters
prefer_waypoints_parameters YAML file for waypoint-preference cost weights

Demos

See the path-planner-sandbox/ subdirectory for standalone test scripts and sample maps.

Node: mrpt_tps_astar_planner_node

Working rationale

  1. Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
  2. On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
  3. The planned path is interpolated at a fixed time step and converted to a WaypointSequence.

The A* implementation is an anytime algorithm: it improves the solution while time allows, then returns the best found. An optional refinement pass (astar_skip_refine: false) further smooths the result.

ROS 2 parameters

Parameter Default Description
show_gui false Open an MRPT 3D window showing maps and the planned path
frame_id_map map TF frame of the global map
frame_id_robot base_link TF frame of the robot
topic_goal_sub tps_astar_nav_goal geometry_msgs/PoseStamped goal subscription
topic_obstacles_gridmap_sub (empty) Comma-separated occupancy-grid topics for obstacles
topic_obstacles_sub (empty) Comma-separated PointCloud2 topics for obstacles
topic_static_maps /map Subset of the above topics to subscribe with transient-local QoS
topic_wp_seq_pub /waypoints Topic on which to publish the resulting waypoint sequence
topic_costmaps_pub /costmap Prefix for costmap debug publishers
ptg_ini (required) Path to PTG .ini file
planner_parameters (required) Path to planner YAML file
global_costmap_parameters (required) Path to costmap YAML file
prefer_waypoints_parameters (required) Path to waypoint-preference YAML file
problem_world_bbox_margin 2.0 Extra margin [m] added around the planning bounding box
problem_world_bbox_ignore_obstacles false If true, obstacle extents are excluded from the bounding box
astar_skip_refine false If true, skip the post-A* trajectory refinement pass
mid_waypoints_allowed_distance 0.5 Acceptance radius [m] for intermediate waypoints
final_waypoint_allowed_distance 0.4 Acceptance radius [m] for the goal waypoint
mid_waypoints_allow_skip true Whether intermediate waypoints may be skipped
final_waypoint_allow_skip false Whether the final waypoint may be skipped
mid_waypoints_ignore_heading false Whether heading is ignored at intermediate waypoints
final_waypoint_ignore_heading false Whether heading is ignored at the final waypoint

Subscribed topics

Topic Type Description
<topic_goal_sub> geometry_msgs/PoseStamped Goal pose; triggers a plan from current TF robot pose
<topic_obstacles_gridmap_sub> (one per entry) nav_msgs/OccupancyGrid Occupancy grid(s) used as static obstacles
<topic_obstacles_sub> (one per entry) sensor_msgs/PointCloud2 Point cloud(s) used as dynamic obstacles

Published topics

Topic Type Description
<topic_wp_seq_pub> (default /waypoints) mrpt_msgs/WaypointSequence Full waypoint sequence with per-waypoint tolerances and flags
<topic_wp_seq_pub>_path (default /waypoints_path) nav_msgs/Path Same path as nav_msgs/Path, mainly for RViz visualization
<topic_costmaps_pub>_0, _1, … nav_msgs/OccupancyGrid Inflated costmaps (one per obstacle source), published after each plan

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.4.0 (2026-04-19)

  • Merge pull request #158 from mrpt-ros-pkg/feat/parallel-planner Implement parallel A* planner; misc bug and style fixes

  • Fix QoS type usage

  • astar planner: made reentrant for serving multiple service calls in multithread

  • Improve readme

  • fix(tps_astar_planner): fix crashes, null deref, and minor log bugs

    - Replace ASSERT_(robot_pose_ok) with graceful error+return in both callback_goal and srv_make_plan_to, so a temporary TF outage does not abort the node or throw inside a service callback.

    - Add null guards before using e.grid_obstacles / e.obstacle_points in do_path_plan() and init_3d_debug() — both can be nullptr if the respective topic callback has not fired yet.

    - Call init_3d_debug() from do_path_plan() when gui_mrpt_ is true, so the 3D window is actually opened (was dead code).

    - Protect pub_costmaps_ resize and lazy publisher creation with pub_costmaps_cs_ mutex.

    - Fix copy-paste error: srv_make_plan_from_to catch block logged wrong function name.

    • Fix log format string: "topic_wp_seq_pub%s" -> "topic_wp_seq_pub: %s".

    - Launch file: lowercase 'false' for problem_world_bbox_ignore_obstacles and astar_skip_refine boolean args (was Python-cased 'False').

  • Contributors: Jose Luis Blanco-Claraco

2.3.1 (2026-04-02)

2.3.0 (2025-10-26)

2.2.4 (2025-07-24)

2.2.3 (2025-07-22)

  • FIX: Build against recent tf2 versions
  • Contributors: Jose Luis Blanco-Claraco

2.2.2 (2025-05-28)

  • FIX: remove usage of obsolete ament_target_dependencies()
  • Merge pull request #156 from r-aguilera/ros2 mrpt_tps_astar_planner_node: improves on obstacle points update
  • astar_planner: limit excessive obstacle points ... logging
  • astar_planner: prevent node from shutting down ... on missing tf info
  • astar planner node: it will always return the best found path, even if success==false
  • Merge pull request #155 from r-aguilera/ros2 Fix MakePlanFromTo srv using robot pose as start
  • Fix MakePlanFromTo srv using robot pose as start
  • Contributors: Jose Luis Blanco-Claraco, Raúl Aguilera

2.2.1 (2024-10-12)

  • Update demo for astar
  • Publish costmaps to ROS for visualization too apart of the custom MRPT GUI
  • Improve astar navigation demo
  • astar planner: add refine() step and parameter to optionally disable it
  • astar node: add two more launch args: problem_world_bbox_margin and problem_world_bbox_ignore_obstacles
  • astar params: add more comments and tune for speed
  • PTGs .ini: Add docs on how to enable backward motions
  • Contributors: Jose Luis Blanco-Claraco

2.2.0 (2024-09-25)

  • fix missing linters; tune tutorial params
  • Update URL entries in package.xml to each package proper documentation
  • ament linters: manually enable just cmake and xml linters
  • Add roslog INFO traces to measure time spent initializing PTGs
  • reformat clang-format with 100 column width
  • Contributors: Jose Luis Blanco-Claraco

2.1.1 (2024-09-02)

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange

No version for distro github showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.4.0
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-04-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS Path Planner with A* in TP-Space Engine

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco
  • Shravan S Rai

Authors

  • Shravan_S_Rai
  • Jose-Luis Blanco-Claraco

mrpt_tps_astar_planner

Overview

This package provides a ROS 2 node that uses the PTG-based A* planner from mrpt_path_planning to compute collision-free waypoint sequences for a non-holonomic robot, respecting its real shape, orientation, and kinematic constraints.

Planning is performed on a SE(2) lattice using Parameterized Trajectory Generator (PTG) families that encode the robot’s motion primitives. The result is published as a mrpt_msgs/WaypointSequence (and a nav_msgs/Path for visualization) and/or returned as the response of a ROS 2 service call.

The node supports concurrent service requests: each executor thread owns a lazily-initialized planner instance, so multiple clients can request plans simultaneously without blocking each other.

How to cite

TBD!

Configuration

Key configuration files passed as ROS 2 parameters:

Parameter Description
ptg_ini INI file describing PTG families (robot kinematics)
planner_parameters YAML file with A* algorithm parameters
global_costmap_parameters YAML file for costmap obstacle-inflation parameters
prefer_waypoints_parameters YAML file for waypoint-preference cost weights

Demos

See the path-planner-sandbox/ subdirectory for standalone test scripts and sample maps.

Node: mrpt_tps_astar_planner_node

Working rationale

  1. Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
  2. On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
  3. The planned path is interpolated at a fixed time step and converted to a WaypointSequence.

The A* implementation is an anytime algorithm: it improves the solution while time allows, then returns the best found. An optional refinement pass (astar_skip_refine: false) further smooths the result.

ROS 2 parameters

Parameter Default Description
show_gui false Open an MRPT 3D window showing maps and the planned path
frame_id_map map TF frame of the global map
frame_id_robot base_link TF frame of the robot
topic_goal_sub tps_astar_nav_goal geometry_msgs/PoseStamped goal subscription
topic_obstacles_gridmap_sub (empty) Comma-separated occupancy-grid topics for obstacles
topic_obstacles_sub (empty) Comma-separated PointCloud2 topics for obstacles
topic_static_maps /map Subset of the above topics to subscribe with transient-local QoS
topic_wp_seq_pub /waypoints Topic on which to publish the resulting waypoint sequence
topic_costmaps_pub /costmap Prefix for costmap debug publishers
ptg_ini (required) Path to PTG .ini file
planner_parameters (required) Path to planner YAML file
global_costmap_parameters (required) Path to costmap YAML file
prefer_waypoints_parameters (required) Path to waypoint-preference YAML file
problem_world_bbox_margin 2.0 Extra margin [m] added around the planning bounding box
problem_world_bbox_ignore_obstacles false If true, obstacle extents are excluded from the bounding box
astar_skip_refine false If true, skip the post-A* trajectory refinement pass
mid_waypoints_allowed_distance 0.5 Acceptance radius [m] for intermediate waypoints
final_waypoint_allowed_distance 0.4 Acceptance radius [m] for the goal waypoint
mid_waypoints_allow_skip true Whether intermediate waypoints may be skipped
final_waypoint_allow_skip false Whether the final waypoint may be skipped
mid_waypoints_ignore_heading false Whether heading is ignored at intermediate waypoints
final_waypoint_ignore_heading false Whether heading is ignored at the final waypoint

Subscribed topics

Topic Type Description
<topic_goal_sub> geometry_msgs/PoseStamped Goal pose; triggers a plan from current TF robot pose
<topic_obstacles_gridmap_sub> (one per entry) nav_msgs/OccupancyGrid Occupancy grid(s) used as static obstacles
<topic_obstacles_sub> (one per entry) sensor_msgs/PointCloud2 Point cloud(s) used as dynamic obstacles

Published topics

Topic Type Description
<topic_wp_seq_pub> (default /waypoints) mrpt_msgs/WaypointSequence Full waypoint sequence with per-waypoint tolerances and flags
<topic_wp_seq_pub>_path (default /waypoints_path) nav_msgs/Path Same path as nav_msgs/Path, mainly for RViz visualization
<topic_costmaps_pub>_0, _1, … nav_msgs/OccupancyGrid Inflated costmaps (one per obstacle source), published after each plan

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.4.0 (2026-04-19)

  • Merge pull request #158 from mrpt-ros-pkg/feat/parallel-planner Implement parallel A* planner; misc bug and style fixes

  • Fix QoS type usage

  • astar planner: made reentrant for serving multiple service calls in multithread

  • Improve readme

  • fix(tps_astar_planner): fix crashes, null deref, and minor log bugs

    - Replace ASSERT_(robot_pose_ok) with graceful error+return in both callback_goal and srv_make_plan_to, so a temporary TF outage does not abort the node or throw inside a service callback.

    - Add null guards before using e.grid_obstacles / e.obstacle_points in do_path_plan() and init_3d_debug() — both can be nullptr if the respective topic callback has not fired yet.

    - Call init_3d_debug() from do_path_plan() when gui_mrpt_ is true, so the 3D window is actually opened (was dead code).

    - Protect pub_costmaps_ resize and lazy publisher creation with pub_costmaps_cs_ mutex.

    - Fix copy-paste error: srv_make_plan_from_to catch block logged wrong function name.

    • Fix log format string: "topic_wp_seq_pub%s" -> "topic_wp_seq_pub: %s".

    - Launch file: lowercase 'false' for problem_world_bbox_ignore_obstacles and astar_skip_refine boolean args (was Python-cased 'False').

  • Contributors: Jose Luis Blanco-Claraco

2.3.1 (2026-04-02)

2.3.0 (2025-10-26)

2.2.4 (2025-07-24)

2.2.3 (2025-07-22)

  • FIX: Build against recent tf2 versions
  • Contributors: Jose Luis Blanco-Claraco

2.2.2 (2025-05-28)

  • FIX: remove usage of obsolete ament_target_dependencies()
  • Merge pull request #156 from r-aguilera/ros2 mrpt_tps_astar_planner_node: improves on obstacle points update
  • astar_planner: limit excessive obstacle points ... logging
  • astar_planner: prevent node from shutting down ... on missing tf info
  • astar planner node: it will always return the best found path, even if success==false
  • Merge pull request #155 from r-aguilera/ros2 Fix MakePlanFromTo srv using robot pose as start
  • Fix MakePlanFromTo srv using robot pose as start
  • Contributors: Jose Luis Blanco-Claraco, Raúl Aguilera

2.2.1 (2024-10-12)

  • Update demo for astar
  • Publish costmaps to ROS for visualization too apart of the custom MRPT GUI
  • Improve astar navigation demo
  • astar planner: add refine() step and parameter to optionally disable it
  • astar node: add two more launch args: problem_world_bbox_margin and problem_world_bbox_ignore_obstacles
  • astar params: add more comments and tune for speed
  • PTGs .ini: Add docs on how to enable backward motions
  • Contributors: Jose Luis Blanco-Claraco

2.2.0 (2024-09-25)

  • fix missing linters; tune tutorial params
  • Update URL entries in package.xml to each package proper documentation
  • ament linters: manually enable just cmake and xml linters
  • Add roslog INFO traces to measure time spent initializing PTGs
  • reformat clang-format with 100 column width
  • Contributors: Jose Luis Blanco-Claraco

2.1.1 (2024-09-02)

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.4.0
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-04-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS Path Planner with A* in TP-Space Engine

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco
  • Shravan S Rai

Authors

  • Shravan_S_Rai
  • Jose-Luis Blanco-Claraco

mrpt_tps_astar_planner

Overview

This package provides a ROS 2 node that uses the PTG-based A* planner from mrpt_path_planning to compute collision-free waypoint sequences for a non-holonomic robot, respecting its real shape, orientation, and kinematic constraints.

Planning is performed on a SE(2) lattice using Parameterized Trajectory Generator (PTG) families that encode the robot’s motion primitives. The result is published as a mrpt_msgs/WaypointSequence (and a nav_msgs/Path for visualization) and/or returned as the response of a ROS 2 service call.

The node supports concurrent service requests: each executor thread owns a lazily-initialized planner instance, so multiple clients can request plans simultaneously without blocking each other.

How to cite

TBD!

Configuration

Key configuration files passed as ROS 2 parameters:

Parameter Description
ptg_ini INI file describing PTG families (robot kinematics)
planner_parameters YAML file with A* algorithm parameters
global_costmap_parameters YAML file for costmap obstacle-inflation parameters
prefer_waypoints_parameters YAML file for waypoint-preference cost weights

Demos

See the path-planner-sandbox/ subdirectory for standalone test scripts and sample maps.

Node: mrpt_tps_astar_planner_node

Working rationale

  1. Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
  2. On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
  3. The planned path is interpolated at a fixed time step and converted to a WaypointSequence.

The A* implementation is an anytime algorithm: it improves the solution while time allows, then returns the best found. An optional refinement pass (astar_skip_refine: false) further smooths the result.

ROS 2 parameters

Parameter Default Description
show_gui false Open an MRPT 3D window showing maps and the planned path
frame_id_map map TF frame of the global map
frame_id_robot base_link TF frame of the robot
topic_goal_sub tps_astar_nav_goal geometry_msgs/PoseStamped goal subscription
topic_obstacles_gridmap_sub (empty) Comma-separated occupancy-grid topics for obstacles
topic_obstacles_sub (empty) Comma-separated PointCloud2 topics for obstacles
topic_static_maps /map Subset of the above topics to subscribe with transient-local QoS
topic_wp_seq_pub /waypoints Topic on which to publish the resulting waypoint sequence
topic_costmaps_pub /costmap Prefix for costmap debug publishers
ptg_ini (required) Path to PTG .ini file
planner_parameters (required) Path to planner YAML file
global_costmap_parameters (required) Path to costmap YAML file
prefer_waypoints_parameters (required) Path to waypoint-preference YAML file
problem_world_bbox_margin 2.0 Extra margin [m] added around the planning bounding box
problem_world_bbox_ignore_obstacles false If true, obstacle extents are excluded from the bounding box
astar_skip_refine false If true, skip the post-A* trajectory refinement pass
mid_waypoints_allowed_distance 0.5 Acceptance radius [m] for intermediate waypoints
final_waypoint_allowed_distance 0.4 Acceptance radius [m] for the goal waypoint
mid_waypoints_allow_skip true Whether intermediate waypoints may be skipped
final_waypoint_allow_skip false Whether the final waypoint may be skipped
mid_waypoints_ignore_heading false Whether heading is ignored at intermediate waypoints
final_waypoint_ignore_heading false Whether heading is ignored at the final waypoint

Subscribed topics

Topic Type Description
<topic_goal_sub> geometry_msgs/PoseStamped Goal pose; triggers a plan from current TF robot pose
<topic_obstacles_gridmap_sub> (one per entry) nav_msgs/OccupancyGrid Occupancy grid(s) used as static obstacles
<topic_obstacles_sub> (one per entry) sensor_msgs/PointCloud2 Point cloud(s) used as dynamic obstacles

Published topics

Topic Type Description
<topic_wp_seq_pub> (default /waypoints) mrpt_msgs/WaypointSequence Full waypoint sequence with per-waypoint tolerances and flags
<topic_wp_seq_pub>_path (default /waypoints_path) nav_msgs/Path Same path as nav_msgs/Path, mainly for RViz visualization
<topic_costmaps_pub>_0, _1, … nav_msgs/OccupancyGrid Inflated costmaps (one per obstacle source), published after each plan

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.4.0 (2026-04-19)

  • Merge pull request #158 from mrpt-ros-pkg/feat/parallel-planner Implement parallel A* planner; misc bug and style fixes

  • Fix QoS type usage

  • astar planner: made reentrant for serving multiple service calls in multithread

  • Improve readme

  • fix(tps_astar_planner): fix crashes, null deref, and minor log bugs

    - Replace ASSERT_(robot_pose_ok) with graceful error+return in both callback_goal and srv_make_plan_to, so a temporary TF outage does not abort the node or throw inside a service callback.

    - Add null guards before using e.grid_obstacles / e.obstacle_points in do_path_plan() and init_3d_debug() — both can be nullptr if the respective topic callback has not fired yet.

    - Call init_3d_debug() from do_path_plan() when gui_mrpt_ is true, so the 3D window is actually opened (was dead code).

    - Protect pub_costmaps_ resize and lazy publisher creation with pub_costmaps_cs_ mutex.

    - Fix copy-paste error: srv_make_plan_from_to catch block logged wrong function name.

    • Fix log format string: "topic_wp_seq_pub%s" -> "topic_wp_seq_pub: %s".

    - Launch file: lowercase 'false' for problem_world_bbox_ignore_obstacles and astar_skip_refine boolean args (was Python-cased 'False').

  • Contributors: Jose Luis Blanco-Claraco

2.3.1 (2026-04-02)

2.3.0 (2025-10-26)

2.2.4 (2025-07-24)

2.2.3 (2025-07-22)

  • FIX: Build against recent tf2 versions
  • Contributors: Jose Luis Blanco-Claraco

2.2.2 (2025-05-28)

  • FIX: remove usage of obsolete ament_target_dependencies()
  • Merge pull request #156 from r-aguilera/ros2 mrpt_tps_astar_planner_node: improves on obstacle points update
  • astar_planner: limit excessive obstacle points ... logging
  • astar_planner: prevent node from shutting down ... on missing tf info
  • astar planner node: it will always return the best found path, even if success==false
  • Merge pull request #155 from r-aguilera/ros2 Fix MakePlanFromTo srv using robot pose as start
  • Fix MakePlanFromTo srv using robot pose as start
  • Contributors: Jose Luis Blanco-Claraco, Raúl Aguilera

2.2.1 (2024-10-12)

  • Update demo for astar
  • Publish costmaps to ROS for visualization too apart of the custom MRPT GUI
  • Improve astar navigation demo
  • astar planner: add refine() step and parameter to optionally disable it
  • astar node: add two more launch args: problem_world_bbox_margin and problem_world_bbox_ignore_obstacles
  • astar params: add more comments and tune for speed
  • PTGs .ini: Add docs on how to enable backward motions
  • Contributors: Jose Luis Blanco-Claraco

2.2.0 (2024-09-25)

  • fix missing linters; tune tutorial params
  • Update URL entries in package.xml to each package proper documentation
  • ament linters: manually enable just cmake and xml linters
  • Add roslog INFO traces to measure time spent initializing PTGs
  • reformat clang-format with 100 column width
  • Contributors: Jose Luis Blanco-Claraco

2.1.1 (2024-09-02)

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange

Package Summary

Version 2.4.0
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-04-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS Path Planner with A* in TP-Space Engine

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco
  • Shravan S Rai

Authors

  • Shravan_S_Rai
  • Jose-Luis Blanco-Claraco

mrpt_tps_astar_planner

Overview

This package provides a ROS 2 node that uses the PTG-based A* planner from mrpt_path_planning to compute collision-free waypoint sequences for a non-holonomic robot, respecting its real shape, orientation, and kinematic constraints.

Planning is performed on a SE(2) lattice using Parameterized Trajectory Generator (PTG) families that encode the robot’s motion primitives. The result is published as a mrpt_msgs/WaypointSequence (and a nav_msgs/Path for visualization) and/or returned as the response of a ROS 2 service call.

The node supports concurrent service requests: each executor thread owns a lazily-initialized planner instance, so multiple clients can request plans simultaneously without blocking each other.

How to cite

TBD!

Configuration

Key configuration files passed as ROS 2 parameters:

Parameter Description
ptg_ini INI file describing PTG families (robot kinematics)
planner_parameters YAML file with A* algorithm parameters
global_costmap_parameters YAML file for costmap obstacle-inflation parameters
prefer_waypoints_parameters YAML file for waypoint-preference cost weights

Demos

See the path-planner-sandbox/ subdirectory for standalone test scripts and sample maps.

Node: mrpt_tps_astar_planner_node

Working rationale

  1. Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
  2. On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
  3. The planned path is interpolated at a fixed time step and converted to a WaypointSequence.

The A* implementation is an anytime algorithm: it improves the solution while time allows, then returns the best found. An optional refinement pass (astar_skip_refine: false) further smooths the result.

ROS 2 parameters

Parameter Default Description
show_gui false Open an MRPT 3D window showing maps and the planned path
frame_id_map map TF frame of the global map
frame_id_robot base_link TF frame of the robot
topic_goal_sub tps_astar_nav_goal geometry_msgs/PoseStamped goal subscription
topic_obstacles_gridmap_sub (empty) Comma-separated occupancy-grid topics for obstacles
topic_obstacles_sub (empty) Comma-separated PointCloud2 topics for obstacles
topic_static_maps /map Subset of the above topics to subscribe with transient-local QoS
topic_wp_seq_pub /waypoints Topic on which to publish the resulting waypoint sequence
topic_costmaps_pub /costmap Prefix for costmap debug publishers
ptg_ini (required) Path to PTG .ini file
planner_parameters (required) Path to planner YAML file
global_costmap_parameters (required) Path to costmap YAML file
prefer_waypoints_parameters (required) Path to waypoint-preference YAML file
problem_world_bbox_margin 2.0 Extra margin [m] added around the planning bounding box
problem_world_bbox_ignore_obstacles false If true, obstacle extents are excluded from the bounding box
astar_skip_refine false If true, skip the post-A* trajectory refinement pass
mid_waypoints_allowed_distance 0.5 Acceptance radius [m] for intermediate waypoints
final_waypoint_allowed_distance 0.4 Acceptance radius [m] for the goal waypoint
mid_waypoints_allow_skip true Whether intermediate waypoints may be skipped
final_waypoint_allow_skip false Whether the final waypoint may be skipped
mid_waypoints_ignore_heading false Whether heading is ignored at intermediate waypoints
final_waypoint_ignore_heading false Whether heading is ignored at the final waypoint

Subscribed topics

Topic Type Description
<topic_goal_sub> geometry_msgs/PoseStamped Goal pose; triggers a plan from current TF robot pose
<topic_obstacles_gridmap_sub> (one per entry) nav_msgs/OccupancyGrid Occupancy grid(s) used as static obstacles
<topic_obstacles_sub> (one per entry) sensor_msgs/PointCloud2 Point cloud(s) used as dynamic obstacles

Published topics

Topic Type Description
<topic_wp_seq_pub> (default /waypoints) mrpt_msgs/WaypointSequence Full waypoint sequence with per-waypoint tolerances and flags
<topic_wp_seq_pub>_path (default /waypoints_path) nav_msgs/Path Same path as nav_msgs/Path, mainly for RViz visualization
<topic_costmaps_pub>_0, _1, … nav_msgs/OccupancyGrid Inflated costmaps (one per obstacle source), published after each plan

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.4.0 (2026-04-19)

  • Merge pull request #158 from mrpt-ros-pkg/feat/parallel-planner Implement parallel A* planner; misc bug and style fixes

  • Fix QoS type usage

  • astar planner: made reentrant for serving multiple service calls in multithread

  • Improve readme

  • fix(tps_astar_planner): fix crashes, null deref, and minor log bugs

    - Replace ASSERT_(robot_pose_ok) with graceful error+return in both callback_goal and srv_make_plan_to, so a temporary TF outage does not abort the node or throw inside a service callback.

    - Add null guards before using e.grid_obstacles / e.obstacle_points in do_path_plan() and init_3d_debug() — both can be nullptr if the respective topic callback has not fired yet.

    - Call init_3d_debug() from do_path_plan() when gui_mrpt_ is true, so the 3D window is actually opened (was dead code).

    - Protect pub_costmaps_ resize and lazy publisher creation with pub_costmaps_cs_ mutex.

    - Fix copy-paste error: srv_make_plan_from_to catch block logged wrong function name.

    • Fix log format string: "topic_wp_seq_pub%s" -> "topic_wp_seq_pub: %s".

    - Launch file: lowercase 'false' for problem_world_bbox_ignore_obstacles and astar_skip_refine boolean args (was Python-cased 'False').

  • Contributors: Jose Luis Blanco-Claraco

2.3.1 (2026-04-02)

2.3.0 (2025-10-26)

2.2.4 (2025-07-24)

2.2.3 (2025-07-22)

  • FIX: Build against recent tf2 versions
  • Contributors: Jose Luis Blanco-Claraco

2.2.2 (2025-05-28)

  • FIX: remove usage of obsolete ament_target_dependencies()
  • Merge pull request #156 from r-aguilera/ros2 mrpt_tps_astar_planner_node: improves on obstacle points update
  • astar_planner: limit excessive obstacle points ... logging
  • astar_planner: prevent node from shutting down ... on missing tf info
  • astar planner node: it will always return the best found path, even if success==false
  • Merge pull request #155 from r-aguilera/ros2 Fix MakePlanFromTo srv using robot pose as start
  • Fix MakePlanFromTo srv using robot pose as start
  • Contributors: Jose Luis Blanco-Claraco, Raúl Aguilera

2.2.1 (2024-10-12)

  • Update demo for astar
  • Publish costmaps to ROS for visualization too apart of the custom MRPT GUI
  • Improve astar navigation demo
  • astar planner: add refine() step and parameter to optionally disable it
  • astar node: add two more launch args: problem_world_bbox_margin and problem_world_bbox_ignore_obstacles
  • astar params: add more comments and tune for speed
  • PTGs .ini: Add docs on how to enable backward motions
  • Contributors: Jose Luis Blanco-Claraco

2.2.0 (2024-09-25)

  • fix missing linters; tune tutorial params
  • Update URL entries in package.xml to each package proper documentation
  • ament linters: manually enable just cmake and xml linters
  • Add roslog INFO traces to measure time spent initializing PTGs
  • reformat clang-format with 100 column width
  • Contributors: Jose Luis Blanco-Claraco

2.1.1 (2024-09-02)

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.4.0
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-04-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS Path Planner with A* in TP-Space Engine

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco
  • Shravan S Rai

Authors

  • Shravan_S_Rai
  • Jose-Luis Blanco-Claraco

mrpt_tps_astar_planner

Overview

This package provides a ROS 2 node that uses the PTG-based A* planner from mrpt_path_planning to compute collision-free waypoint sequences for a non-holonomic robot, respecting its real shape, orientation, and kinematic constraints.

Planning is performed on a SE(2) lattice using Parameterized Trajectory Generator (PTG) families that encode the robot’s motion primitives. The result is published as a mrpt_msgs/WaypointSequence (and a nav_msgs/Path for visualization) and/or returned as the response of a ROS 2 service call.

The node supports concurrent service requests: each executor thread owns a lazily-initialized planner instance, so multiple clients can request plans simultaneously without blocking each other.

How to cite

TBD!

Configuration

Key configuration files passed as ROS 2 parameters:

Parameter Description
ptg_ini INI file describing PTG families (robot kinematics)
planner_parameters YAML file with A* algorithm parameters
global_costmap_parameters YAML file for costmap obstacle-inflation parameters
prefer_waypoints_parameters YAML file for waypoint-preference cost weights

Demos

See the path-planner-sandbox/ subdirectory for standalone test scripts and sample maps.

Node: mrpt_tps_astar_planner_node

Working rationale

  1. Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
  2. On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
  3. The planned path is interpolated at a fixed time step and converted to a WaypointSequence.

The A* implementation is an anytime algorithm: it improves the solution while time allows, then returns the best found. An optional refinement pass (astar_skip_refine: false) further smooths the result.

ROS 2 parameters

Parameter Default Description
show_gui false Open an MRPT 3D window showing maps and the planned path
frame_id_map map TF frame of the global map
frame_id_robot base_link TF frame of the robot
topic_goal_sub tps_astar_nav_goal geometry_msgs/PoseStamped goal subscription
topic_obstacles_gridmap_sub (empty) Comma-separated occupancy-grid topics for obstacles
topic_obstacles_sub (empty) Comma-separated PointCloud2 topics for obstacles
topic_static_maps /map Subset of the above topics to subscribe with transient-local QoS
topic_wp_seq_pub /waypoints Topic on which to publish the resulting waypoint sequence
topic_costmaps_pub /costmap Prefix for costmap debug publishers
ptg_ini (required) Path to PTG .ini file
planner_parameters (required) Path to planner YAML file
global_costmap_parameters (required) Path to costmap YAML file
prefer_waypoints_parameters (required) Path to waypoint-preference YAML file
problem_world_bbox_margin 2.0 Extra margin [m] added around the planning bounding box
problem_world_bbox_ignore_obstacles false If true, obstacle extents are excluded from the bounding box
astar_skip_refine false If true, skip the post-A* trajectory refinement pass
mid_waypoints_allowed_distance 0.5 Acceptance radius [m] for intermediate waypoints
final_waypoint_allowed_distance 0.4 Acceptance radius [m] for the goal waypoint
mid_waypoints_allow_skip true Whether intermediate waypoints may be skipped
final_waypoint_allow_skip false Whether the final waypoint may be skipped
mid_waypoints_ignore_heading false Whether heading is ignored at intermediate waypoints
final_waypoint_ignore_heading false Whether heading is ignored at the final waypoint

Subscribed topics

Topic Type Description
<topic_goal_sub> geometry_msgs/PoseStamped Goal pose; triggers a plan from current TF robot pose
<topic_obstacles_gridmap_sub> (one per entry) nav_msgs/OccupancyGrid Occupancy grid(s) used as static obstacles
<topic_obstacles_sub> (one per entry) sensor_msgs/PointCloud2 Point cloud(s) used as dynamic obstacles

Published topics

Topic Type Description
<topic_wp_seq_pub> (default /waypoints) mrpt_msgs/WaypointSequence Full waypoint sequence with per-waypoint tolerances and flags
<topic_wp_seq_pub>_path (default /waypoints_path) nav_msgs/Path Same path as nav_msgs/Path, mainly for RViz visualization
<topic_costmaps_pub>_0, _1, … nav_msgs/OccupancyGrid Inflated costmaps (one per obstacle source), published after each plan

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.4.0 (2026-04-19)

  • Merge pull request #158 from mrpt-ros-pkg/feat/parallel-planner Implement parallel A* planner; misc bug and style fixes

  • Fix QoS type usage

  • astar planner: made reentrant for serving multiple service calls in multithread

  • Improve readme

  • fix(tps_astar_planner): fix crashes, null deref, and minor log bugs

    - Replace ASSERT_(robot_pose_ok) with graceful error+return in both callback_goal and srv_make_plan_to, so a temporary TF outage does not abort the node or throw inside a service callback.

    - Add null guards before using e.grid_obstacles / e.obstacle_points in do_path_plan() and init_3d_debug() — both can be nullptr if the respective topic callback has not fired yet.

    - Call init_3d_debug() from do_path_plan() when gui_mrpt_ is true, so the 3D window is actually opened (was dead code).

    - Protect pub_costmaps_ resize and lazy publisher creation with pub_costmaps_cs_ mutex.

    - Fix copy-paste error: srv_make_plan_from_to catch block logged wrong function name.

    • Fix log format string: "topic_wp_seq_pub%s" -> "topic_wp_seq_pub: %s".

    - Launch file: lowercase 'false' for problem_world_bbox_ignore_obstacles and astar_skip_refine boolean args (was Python-cased 'False').

  • Contributors: Jose Luis Blanco-Claraco

2.3.1 (2026-04-02)

2.3.0 (2025-10-26)

2.2.4 (2025-07-24)

2.2.3 (2025-07-22)

  • FIX: Build against recent tf2 versions
  • Contributors: Jose Luis Blanco-Claraco

2.2.2 (2025-05-28)

  • FIX: remove usage of obsolete ament_target_dependencies()
  • Merge pull request #156 from r-aguilera/ros2 mrpt_tps_astar_planner_node: improves on obstacle points update
  • astar_planner: limit excessive obstacle points ... logging
  • astar_planner: prevent node from shutting down ... on missing tf info
  • astar planner node: it will always return the best found path, even if success==false
  • Merge pull request #155 from r-aguilera/ros2 Fix MakePlanFromTo srv using robot pose as start
  • Fix MakePlanFromTo srv using robot pose as start
  • Contributors: Jose Luis Blanco-Claraco, Raúl Aguilera

2.2.1 (2024-10-12)

  • Update demo for astar
  • Publish costmaps to ROS for visualization too apart of the custom MRPT GUI
  • Improve astar navigation demo
  • astar planner: add refine() step and parameter to optionally disable it
  • astar node: add two more launch args: problem_world_bbox_margin and problem_world_bbox_ignore_obstacles
  • astar params: add more comments and tune for speed
  • PTGs .ini: Add docs on how to enable backward motions
  • Contributors: Jose Luis Blanco-Claraco

2.2.0 (2024-09-25)

  • fix missing linters; tune tutorial params
  • Update URL entries in package.xml to each package proper documentation
  • ament linters: manually enable just cmake and xml linters
  • Add roslog INFO traces to measure time spent initializing PTGs
  • reformat clang-format with 100 column width
  • Contributors: Jose Luis Blanco-Claraco

2.1.1 (2024-09-02)

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.4.0
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-04-18
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS Path Planner with A* in TP-Space Engine

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco
  • Shravan S Rai

Authors

  • Shravan_S_Rai
  • Jose-Luis Blanco-Claraco

mrpt_tps_astar_planner

Overview

This package provides a ROS 2 node that uses the PTG-based A* planner from mrpt_path_planning to compute collision-free waypoint sequences for a non-holonomic robot, respecting its real shape, orientation, and kinematic constraints.

Planning is performed on a SE(2) lattice using Parameterized Trajectory Generator (PTG) families that encode the robot’s motion primitives. The result is published as a mrpt_msgs/WaypointSequence (and a nav_msgs/Path for visualization) and/or returned as the response of a ROS 2 service call.

The node supports concurrent service requests: each executor thread owns a lazily-initialized planner instance, so multiple clients can request plans simultaneously without blocking each other.

How to cite

TBD!

Configuration

Key configuration files passed as ROS 2 parameters:

Parameter Description
ptg_ini INI file describing PTG families (robot kinematics)
planner_parameters YAML file with A* algorithm parameters
global_costmap_parameters YAML file for costmap obstacle-inflation parameters
prefer_waypoints_parameters YAML file for waypoint-preference cost weights

Demos

See the path-planner-sandbox/ subdirectory for standalone test scripts and sample maps.

Node: mrpt_tps_astar_planner_node

Working rationale

  1. Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
  2. On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
  3. The planned path is interpolated at a fixed time step and converted to a WaypointSequence.

The A* implementation is an anytime algorithm: it improves the solution while time allows, then returns the best found. An optional refinement pass (astar_skip_refine: false) further smooths the result.

ROS 2 parameters

Parameter Default Description
show_gui false Open an MRPT 3D window showing maps and the planned path
frame_id_map map TF frame of the global map
frame_id_robot base_link TF frame of the robot
topic_goal_sub tps_astar_nav_goal geometry_msgs/PoseStamped goal subscription
topic_obstacles_gridmap_sub (empty) Comma-separated occupancy-grid topics for obstacles
topic_obstacles_sub (empty) Comma-separated PointCloud2 topics for obstacles
topic_static_maps /map Subset of the above topics to subscribe with transient-local QoS
topic_wp_seq_pub /waypoints Topic on which to publish the resulting waypoint sequence
topic_costmaps_pub /costmap Prefix for costmap debug publishers
ptg_ini (required) Path to PTG .ini file
planner_parameters (required) Path to planner YAML file
global_costmap_parameters (required) Path to costmap YAML file
prefer_waypoints_parameters (required) Path to waypoint-preference YAML file
problem_world_bbox_margin 2.0 Extra margin [m] added around the planning bounding box
problem_world_bbox_ignore_obstacles false If true, obstacle extents are excluded from the bounding box
astar_skip_refine false If true, skip the post-A* trajectory refinement pass
mid_waypoints_allowed_distance 0.5 Acceptance radius [m] for intermediate waypoints
final_waypoint_allowed_distance 0.4 Acceptance radius [m] for the goal waypoint
mid_waypoints_allow_skip true Whether intermediate waypoints may be skipped
final_waypoint_allow_skip false Whether the final waypoint may be skipped
mid_waypoints_ignore_heading false Whether heading is ignored at intermediate waypoints
final_waypoint_ignore_heading false Whether heading is ignored at the final waypoint

Subscribed topics

Topic Type Description
<topic_goal_sub> geometry_msgs/PoseStamped Goal pose; triggers a plan from current TF robot pose
<topic_obstacles_gridmap_sub> (one per entry) nav_msgs/OccupancyGrid Occupancy grid(s) used as static obstacles
<topic_obstacles_sub> (one per entry) sensor_msgs/PointCloud2 Point cloud(s) used as dynamic obstacles

Published topics

Topic Type Description
<topic_wp_seq_pub> (default /waypoints) mrpt_msgs/WaypointSequence Full waypoint sequence with per-waypoint tolerances and flags
<topic_wp_seq_pub>_path (default /waypoints_path) nav_msgs/Path Same path as nav_msgs/Path, mainly for RViz visualization
<topic_costmaps_pub>_0, _1, … nav_msgs/OccupancyGrid Inflated costmaps (one per obstacle source), published after each plan

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.4.0 (2026-04-19)

  • Merge pull request #158 from mrpt-ros-pkg/feat/parallel-planner Implement parallel A* planner; misc bug and style fixes

  • Fix QoS type usage

  • astar planner: made reentrant for serving multiple service calls in multithread

  • Improve readme

  • fix(tps_astar_planner): fix crashes, null deref, and minor log bugs

    - Replace ASSERT_(robot_pose_ok) with graceful error+return in both callback_goal and srv_make_plan_to, so a temporary TF outage does not abort the node or throw inside a service callback.

    - Add null guards before using e.grid_obstacles / e.obstacle_points in do_path_plan() and init_3d_debug() — both can be nullptr if the respective topic callback has not fired yet.

    - Call init_3d_debug() from do_path_plan() when gui_mrpt_ is true, so the 3D window is actually opened (was dead code).

    - Protect pub_costmaps_ resize and lazy publisher creation with pub_costmaps_cs_ mutex.

    - Fix copy-paste error: srv_make_plan_from_to catch block logged wrong function name.

    • Fix log format string: "topic_wp_seq_pub%s" -> "topic_wp_seq_pub: %s".

    - Launch file: lowercase 'false' for problem_world_bbox_ignore_obstacles and astar_skip_refine boolean args (was Python-cased 'False').

  • Contributors: Jose Luis Blanco-Claraco

2.3.1 (2026-04-02)

2.3.0 (2025-10-26)

2.2.4 (2025-07-24)

2.2.3 (2025-07-22)

  • FIX: Build against recent tf2 versions
  • Contributors: Jose Luis Blanco-Claraco

2.2.2 (2025-05-28)

  • FIX: remove usage of obsolete ament_target_dependencies()
  • Merge pull request #156 from r-aguilera/ros2 mrpt_tps_astar_planner_node: improves on obstacle points update
  • astar_planner: limit excessive obstacle points ... logging
  • astar_planner: prevent node from shutting down ... on missing tf info
  • astar planner node: it will always return the best found path, even if success==false
  • Merge pull request #155 from r-aguilera/ros2 Fix MakePlanFromTo srv using robot pose as start
  • Fix MakePlanFromTo srv using robot pose as start
  • Contributors: Jose Luis Blanco-Claraco, Raúl Aguilera

2.2.1 (2024-10-12)

  • Update demo for astar
  • Publish costmaps to ROS for visualization too apart of the custom MRPT GUI
  • Improve astar navigation demo
  • astar planner: add refine() step and parameter to optionally disable it
  • astar node: add two more launch args: problem_world_bbox_margin and problem_world_bbox_ignore_obstacles
  • astar params: add more comments and tune for speed
  • PTGs .ini: Add docs on how to enable backward motions
  • Contributors: Jose Luis Blanco-Claraco

2.2.0 (2024-09-25)

  • fix missing linters; tune tutorial params
  • Update URL entries in package.xml to each package proper documentation
  • ament linters: manually enable just cmake and xml linters
  • Add roslog INFO traces to measure time spent initializing PTGs
  • reformat clang-format with 100 column width
  • Contributors: Jose Luis Blanco-Claraco

2.1.1 (2024-09-02)

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange