This package provides a ROS 2 node for reactive navigation for wheeled robots using MRPT navigation algorithms (TP-Space).
Main papers
IROS06 (PDF)
@INPROCEEDINGS{,
author = {Blanco, Jos{\'{e}}-Luis and Gonz{\'{a}}lez-Jim{\'{e}}nez, Javier and Fern{\'{a}}ndez-Madrigal, Juan-Antonio},
month = oct,
title = {The Trajectory Parameter Space (TP-Space): A New Space Representation for Non-Holonomic Mobile Robot Reactive Navigation},
booktitle = {IEEE International Conference on Intelligent Robots and Systems (IROS'06)},
year = {2006},
location = {Beijing (China)}
}
Other related papers
@ARTICLE{xiao2023barn,
author = {Xiao, Xuesu and Xu, Zifan and Warnell, Garrett and Stone, Peter and Gebelli Guinjoan, Ferran and T Rodrigues, Romulo and Bruyninckx, Herman and Mandala, Hanjaya and Christmann, Guilherme and Blanco, Jos{\'{e}}-Luis and Somashekara Rai, Shravan},
month = {{aug}},
title = {Autonomous Ground Navigation in Highly Constrained Spaces: Lessons learned from The 2nd BARN Challenge at ICRA 2023},
journal = {IEEE Robotics & Automation Magazine},
volume = {30},
number = {4},
year = {2023},
url = {https://ieeexplore.ieee.org/abstract/document/10355540/},
doi = {10.1109/MRA.2023.3322920},
pages = {91--97}
}
IJARS 2015 PDF
@ARTICLE{bellone2015tprrt,
author = {Blanco, Jos{\'{e}}-Luis and Bellone, Mauro and Gim{\'{e}}nez-Fern{\'{a}}ndez, Antonio},
month = {{{may}}},
title = {TP-Space RRT: Kinematic path planning of non-holonomic any-shape vehicles},
journal = {International Journal of Advanced Robotic Systems},
volume = {12},
number = {55},
year = {2015},
url = {http://www.intechopen.com/journals/international_journal_of_advanced_robotic_systems/tp-space-rrt-ndash-kinematic-path-planning-of-non-holonomic-any-shape-vehicles},
doi = {10.5772/60463}
}
The main parameters of our approach are:
- Robot shape: The "2D foot-print" of the robot.
- PTGs: One or more families of trajectories, used to look ahead and plan what is the most interesting next motor command.
- Motion decision: These parameters can be tuned to modify the heuristics that control what motor actions are selected.
ros2 launch mrpt_tutorials reactive_nav_demo_with_mvsim.launch.py
to start:
mrpt_reactivenav2d
for the autonomous reactive navigation (this package),mrpt_pointcloud_pipeline
for generating input obstacles for the navigator from lidar data,mvsim
to simulate a live robot that can be controlled by the navigator.
The C++ ROS 2 node comprises XXX
XXX
- xxx
-
xxx
-
reactivenav_events
(std_msgs/String
): One message with a string keyword will be published for each important navigation event. The list possible message strings are:START
: Start of navigationEND
: Successful end of navigation command (reach of single goal, or final waypoint of waypoint list).WP_REACHED <INDEX> (REACHED|SKIPPED)
: Reached an intermediary waypoint in waypoint list navigation. The waypoint may have been physically reached or just skipped.WP_NEW <INDEX>
: Heading towards a new intermediary/final waypoint in waypoint list navigation.ERROR
: Error asking sensory data from robot or sending motor commands.WAY_SEEMS_BLOCKED
: No progression made towards target for a predefined period of time.APPARENT_COLLISION
: Apparent collision event (i.e. there is at least one obstacle point inside the robot shape).CANNOT_GET_CLOSER
: Target seems to be blocked by an obstacle.
Can be used to navigate to a single target SE(2) pose.
Example output
Example CLI call:
ros2 action send_goal /rnav/navigate_goal mrpt_nav_interfaces/action/NavigateGoal --feedback \
"target:
header: {stamp: {sec: 0, nanosec: 0}, frame_id: 'map'}
pose: {position: {x: 3.0, y: 0.0, z: 0.0}, orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0}}
"
Example output:
Goal accepted with ID: 38d28cd7ad604e41bcfa7d50162fbd93
Feedback:
state:
total_waypoints: 1
reached_waypoints: 0
Feedback:
state:
total_waypoints: 1
reached_waypoints: 0
[...]
Feedback:
state:
total_waypoints: 1
reached_waypoints: 0
Result:
state:
navigation_status: 0
Goal finished with status: SUCCEEDED
Can be used to navigate to a sequence of waypoints.
Example output
Example CLI call:
ros2 action send_goal /rnav/navigate_waypoints mrpt_nav_interfaces/action/NavigateWaypoints --feedback \
"waypoints:
header: {stamp: {sec: 0, nanosec: 0}, frame_id: 'map'}
waypoints:
- target: {position: {x: 2.0, y: 0.0, z: 0.0}, orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0}}
ignore_heading: true
allow_skip: false
allowed_distance: 0.30
- target: {position: {x: 4.0, y: 0.2, z: 0.0}, orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0}}
ignore_heading: true
allow_skip: false
allowed_distance: 0.30
"
Example output:
Goal accepted with ID: f8180e191f0d4f5ca8466c77acbab333
Feedback:
state:
total_waypoints: 2
reached_waypoints: -1
Feedback:
state:
total_waypoints: 2
reached_waypoints: 0
Feedback:
state:
total_waypoints: 2
reached_waypoints: 1
[...]
Feedback:
state:
total_waypoints: 2
reached_waypoints: 1
Result:
state:
navigation_status: 0
Goal finished with status: SUCCEEDED
This package provides launch/reactivenav.launch.py:
ros2 launch mrpt_reactivenav2d reactivenav.launch.py
which can be used in user projects to launch the MRPT reactive navigation node, by setting these launch arguments:
XXX_config_file
: Path to an INI file with...