Package Summary

Version 2.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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 ardent showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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 bouncy showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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 crystal showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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 eloquent showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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 dashing showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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 foxy showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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 lunar showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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 jade showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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 indigo showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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 hydro showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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 kinetic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 2.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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.6.1
License BSD
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/mrpt-ros-pkg/mrpt_navigation.git
VCS Type git
VCS Version ros2
Last Updated 2026-10-03
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.

At startup the PTG lookup tables are built in the background, which can take tens of seconds. Goals and service requests received meanwhile are rejected with a warning in the log (PTGs initialized marks when the node is ready).

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
reverse_motion_cost_factor 1.0 Extra cost per second driven in reverse, so paths only back up when it pays off (0: same cost as forward)
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

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mrpt_tps_astar_planner_node

2.6.1 (2026-10-02)

2.6.0 (2026-10-01)

  • Merge pull request #176 from mrpt-ros-pkg/docs/tps-astar-planner-params
  • Enable backward motion in the default PTG set
  • mrpt_tps_astar_planner: document the weighted-A* and Reeds-Shepp planner options
  • Merge pull request #175 from mrpt-ros-pkg/mrpt3
  • Merge ros2 into mrpt3
  • Declare missing MRPT 3.x package.xml dependencies
  • mrpt_tps_astar_planner: link the split-off mrpt_path_planning_viz lib
  • mrpt_tps_astar_planner: link against the actual mpp::mrpt_path_planning target
  • Merge pull request #174 from mrpt-ros-pkg/fix/astar-planner-mpp-compat
  • fix(tps_astar_planner): properly SFINAE-guard windowTitle and ptgStepIndex
  • fix: sfinae to set window title on mrpt_path_planning newer versions
  • tps_astar_planner: fix clang-format violation blocking CI
  • tps_astar_planner_node: densify solution path before GUI render, titled window
  • update to use new mpp lib structure
  • Merge pull request #169 from mrpt-ros-pkg/feat/astar-footprint-aware-costmap
  • feat(tps_astar_planner): footprint-aware clearance costmap (back-compatible)
  • Merge pull request #168 from mrpt-ros-pkg/fix/tps-astar-concurrent-planning-race
  • fix(tps_astar_planner): serialize planning to avoid concurrent PTG corruption
  • Merge pull request #163 from mrpt-ros-pkg/feature/ccache-support
  • build: enable ccache in all packages when available
  • Port to mrpt3: fix yaml API, mrpt::opengl→viz, CImage, asCvMatRef
  • Port to MRPT 3.x: rename packages and targets
  • Contributors: Jose Luis Blanco-Claraco

2.5.0 (2026-05-11)

  • Merge pull request #161 from mrpt-ros-pkg/fix-threads Fix threads
  • fix: safer multithreading access
  • Merge pull request #159 from mrpt-ros-pkg/bump-cmake bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • fix: remove deadcode on debug 3D window
  • Contributors: Jose Luis Blanco-Claraco

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

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