|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |
Launch files
Messages
Services
Plugins
Recent questions tagged mrpt_tps_astar_planner at Robotics Stack Exchange
|
mrpt_tps_astar_planner package from mrpt_navigation repomrpt_map_server mrpt_msgs_bridge mrpt_nav_interfaces mrpt_navigation mrpt_pf_localization mrpt_pointcloud_pipeline mrpt_reactivenav2d mrpt_tps_astar_planner mrpt_trajectory_follower mrpt_tutorials |
ROS Distro
|
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
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
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
- Obstacle data are maintained from subscribed gridmaps and/or point-cloud topics (updated asynchronously, protected by a mutex).
- On each planning request (topic goal or service call) the node snapshots the current obstacle data, builds cost evaluators, and runs the A* planner.
- 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 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
Package Dependencies
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mrpt_navigation |