This repository contains ROS packages for dynamic goal handling, including plugins, utilities, and test cases for robust navigation in robot systems. It is structured into three primary packages: dyn_goal, and two modifications to voxel_grid and costmap_2d packages.
Our approach to dynamic goal handling is inspired by the multimodal navigation method presented in the following paper:
@inproceedings{bettencourt2021multimodal,
author={Bettencourt, Rui and Lima, Pedro U.},
booktitle={2021 IEEE International Conference on Autonomous Robot Systems and Competitions (ICARSC)},
title={Multimodal Navigation for Autonomous Service Robots},
year={2021},
pages={25-30},
doi={10.1109/ICARSC52212.2021.9429771}}
The method proposed by Bettencourt and Lima introduces a multimodal navigation system that combines different navigation strategies to achieve robust and efficient navigation in complex environments.
Our implementation incorporates these concepts to create a flexible and robust dynamic goal handling system that can adapt to changing environments and goals.
- costmap_2d
This package provides the core components to work with 2D costmaps, which are essential for navigation in ROS-based systems. It includes various plugins, configuration files, and test cases. Key Changes to original costmap_2d:
It does not add costmap information from the sensors if dynamic goal is active around the frame to follow.
- voxel_grid
The voxel_grid package provides an efficient 3D voxel representation for obstacle and environment mapping, commonly used in navigation systems. Changes were made to make this code compatible with dyn_goal.
This package provides the logic and infrastructure to handle dynamic goals in a robot navigation system. It is split into ROS-dependent and ROS-independent components. Key Directories and Files:
ros/src/dyn_goal_ros/: ROS-dependent scripts, including dyn_goal_node.py and topic_to_tf.py.
msg/: Message definition dyn_goal_msg.msg for sending dynamic goals between nodes.
launch/: Launch files for bringing up the dyn_goal node and other configurations.
scripts/: Executable scripts such as dyn_goal_node and topic_to_tf_node for testing and running the dynamic goal system.
ROS Nodes:
dyn_goal_node: Node that processes dynamic goal information.
teleop_tf_test.py: A utility script to test teleoperation and transformation logic.
- Clone the repository into your ROS workspace:
cd ~/catkin_ws/src
git clone <repository_url>
- Build the workspace:
cd ~/catkin_ws
catkin build
- Source the workspace:
source devel/setup.bash
You can launch the dyn_goal node with:
roslaunch dyn_goal dyn_goal.launch
To test the method you can teleoperate the tf by running:
python3 ros/src/dyn_goal_ros/teleop_tf_test.py
This repository incorporates code from the ros-planning/navigation repository for the costmap_2d and voxel_grid packages. We acknowledge and appreciate the contributions from the ROS community.
This repository is licensed under the MIT License. See the LICENSE file for more details.