# rrt_exploration
It is a ROS package that implements a multi-robot map exploration algorithm for mobile robots. It is based on the Rapidly-Exploring Random Tree (RRT) algorithm. It uses occupancy girds as a map representation.The packgae has 5 different ROS nodes:
- Global RRT frontier point detector node.
- Local RRT frontier point detector node.
- Filter node.
- Assigner node.
- opencv-based frontier detector node.
This is a [Youtube playlist](https://www.youtube.com/playlist?list=PLoGH52eUIHsc1B_xPLL6ogzYxrWy675kr) showing the package running on single/multiple robots, using real setup (Kobuki robots) and simulation (Gazebo).
Note: This package was written during my master's thesis at the American University of Sharjah. My thesis advisor is Dr. [Shayok Mukhopadhyay](https://sites.google.com/site/shayok/Home). If you are using this package in your research work, please cite this [paper](http://ieeexplore.ieee.org/document/8202319/).
## 1. Requirements
The package has been tested on both ROS Kinetic and ROS Indigo, it should work on other distributions like Jade. The following requirements are needed before installing the package:
1- You should have installed a ROS distribution (indigo or later. Recommended is either indigo or kinetic).
2- Created a workspace.
3- Installed the "gmapping" ROS package: on Ubuntu, and if you are running ROS Kinectic, you can do that by typing the following command in the terminal:
```sh
$ sudo apt-get install ros-kinetic-gmapping
```
4- Install ROS navigation stack. You can do that with the following command (assuming Ubuntu, ROS Kinetic):
```sh
$ sudo apt-get install ros-kinetic-navigation
```
5- You should have Python 2.7. (it was not tested on Python 3).
6-You should have/install the following python modules:
-OpenCV (cv2)
```sh
$ sudo apt-get install python-opencv
```
-Numpy
```sh
$ sudo apt-get install python-numpy
```
-Sklearn
```sh
$ sudo apt-get install python-scikits-learn
```
## 2. Installation
Download the package and place it inside the ```/src``` folder in your workspace. And then compile using ```catkin_make```.
## 3. Setting Up Your Robots
This package provides an exploration strategy for single or multiple robots. However, for it to work, you should have set your robots ready using the [navigation stack](http://wiki.ros.org/navigation). Additionally, the robots must be set and prepared as follows.
Note: If you want to quickly run and test the package, you can try out the [rrt_exploration_tutorials](https://github.com/hasauino/rrt_exploration_tutorials) package which provides Gazebo simulation for single and multiple robots, you can use it to directly with this package.
### 3.1. Robots Network
For the multi-robot configuration, the package doesn't require special network configuration, it simply works by having a single ROS master (can be one of the robots). So on the other robots, the ```ROS_MASTER_URI``` parameter should be pointing at the master's address.
For more information on setting up ROS on multiple machines, follow [this](http://wiki.ros.org/ROS/NetworkSetup) link.
### 3.2. Robot's frame names in ```tf```
All robot's frames should be prefixed by its name. Naming of robots starts from "/robot_1", "/robot_2", "/robot_3", .. and so on. Even if you are using the package for single robot, robot's frames should be prefixed by its name (i.e. /robot_1). So for robot_1, the frames in the ```tf``` tree should look like this:
![alt text](https://github.com/hasauino/storage/blob/master/pictures/framesTf.png "robot_1 frames")
### 3.3. Robot's node and topic names
All the nodes and topics running on a robot must also be prefixed by its name. For robot 1, node names should look like: ```/robot_1/move_base_node```, ```/robot_1/slam_gmapping```.
And topic names should be like: ```/robot_1/odom```, ```/robot_1/map```, ```/robot_1/base_scan```, ..etc.
### 3.4. Setting up the navigation stack on the robots
The ```move_base_node``` node, which brings up the navigation stack on the robot, must be running. This package (rrt_exploration) generates target exploration goals, each robot must be able to receive these points and move towards them. This is why the navigation stack is needed. Additionally, each robot must have a global and local cost maps. All of these are proivded from the ```move_base_node```.
### 3.5. A mapping node
Each robot should have a local map generated from the [gmapping](http://wiki.ros.org/gmapping) package.
### 3.6. A map merging node
For the multi-robot case, there should be a node that merges all the local maps into one global map. You can use [this](http://wiki.ros.org/multirobot_map_merge) package.
## 4. Nodes
There are 3 types of nodes; nodes for detecting frontier points in an occupancy grid map, a node for filtering the detected points, and a node for assigning the points to the robots. The following figure shows the structure:
![alt text](https://github.com/hasauino/storage/blob/master/pictures/fullSchematic.png "overview of the exploration strategy")
### 4.1. global_rrt_frontier_detector
The ```global_rrt_frontier_detector``` node takes an occupancy grid and finds frontier points (which are exploration targets) in it. It publishes the detected points so the filter node can process. In multi-robot configuration, it is intended to have only a single instance of this node running.
Running additional instances of the global frontier detector can enhance the speed of frontier points detection, if needed.
#### 4.1.1. Parameters
- ```~map_topic``` (string, default: "/robot_1/map"): This parameter defines the topic name on which the node will recieve the map.
- ```~eta``` (float, default: 0.5): This parameter controls the growth rate of the RRT that is used in the detection of frontier points, the unit is in meters. This parameter should be set according to the map size, a very large value will cause the tree to grow faster and hence detect frontier points faster, but a large growth rate also implies that the tree will be missing small corners in the map.
#### 4.1.2. Subscribed Topics
- The map (Topic name is defined by the ```~map_topic``` parameter) ([nav_msgs/OccupancyGrid](http://docs.ros.org/api/nav_msgs/html/msg/OccupancyGrid.html))
- ```clicked_point``` ([geometry_msgs/PointStamped Message](http://docs.ros.org/api/geometry_msgs/html/msg/PointStamped.html)): The ```global_rrt_frontier_detector``` node requires that the region to be explored is defined. This topic is where the node recieves five points that define the region. The first four points are four defining a square region to be explored, and the last point is the tree starting point. After publishing those five points on this topic, the RRT will start detecting frontier points. The five points are intended to be published from Rviz using ![alt text](https://github.com/hasauino/storage/blob/master/pictures/publishPointRviz_button.png "Rviz publish point button") button.
#### 4.1.3. Published Topics
- ```detected_points``` ([geometry_msgs/PointStamped Message](http://docs.ros.org/api/geometry_msgs/html/msg/PointStamped.html)): The topic on which the node publishes detected frontier points.
- ```~shapes``` ([visualization_msgs/Marker Message](http://docs.ros.org/api/visualization_msgs/html/msg/Marker.html)): On this topic, the node publishes line shapes to visualize the RRT using Rviz.
### 4.2. local_rrt_frontier_detector
This node is similar to the global_rrt_frontier_detector. However, it works differently, as the tree here keeps resetting every time a frontier point is detected. This node is intended to be run along side the global_rrt_frontier_detector node, it is responsible for fast detection of frontier points that lie in the close vicinity of the robot.
In multi-robot configuration, each robot runs an instance of the local_rrt_frontier_detector. So for a team of 3 robots, there will be 4 nodes for detecting frontier points; 3 local detectors and 1 global detect
没有合适的资源?快使用搜索试试~ 我知道了~
移动机器人项目组项目
共1034个文件
html:152个
png:110个
js:104个
5星 · 超过95%的资源 需积分: 48 177 下载量 40 浏览量
2019-03-14
18:33:00
上传
评论 16
收藏 17MB ZIP 举报
温馨提示
本项目主要是实现移动机器人多站点循环导航和自主探索建图功能,并拓展加入UI可视化界面增加导航目标和寻墙检测建图。在多站点循环导航任务中,首先要完成多点导航函数的撰写,实现单次导航任务,然后在函数中加入里程计清零环节和循环次数设定环节,最后使用UI界面实现循环次数和导航点的设定。在自主探索建图任务中,首先配置好自主避障参数,然后实现自主建图探索功能,接下来根据建图效果确立停止条件,最后完成停止条件函数的撰写。
资源推荐
资源详情
资源评论
收起资源包目录
移动机器人项目组项目 (1034个子文件)
02f427e56056eace84cdeb2bc9fc243f036a18 177B
08f7875858403a22dc76e120dc0c0740869e57 254B
11d45ba5fb3d830f94e2bbc01b8ac30384d789 3KB
11e15c3a4c2e3f9879a009d052cc971814203d 551B
12db746b4c5619799db515e927cb8dc3731438 205B
184d311e9f03de12d1bf8dfe366d9605f61f5e 253B
20292f844f21b89c88622914625285c2e73d51 65B
21617c56625074b6770209d4af0164c10733c4 107B
218bcfc09a4cb065975925934759b17902e7d4 107B
22c66174b197643a000133f1b082af45776eaf 176B
251d291fd3d8b153572170297453ae73f843c0 254B
2575b0e5d3091af2262422a32114908a0d28ef 254B
2b97bc8376f8a04197c3d4dcbd28be88eaa1ad 626B
2d98e47a2bcfc31f98c156b6cee16e00d831d5 91B
2dfddb06bf044ec4b5087aa56f820140906d1b 627B
30d9ba8fb957c0ffc68016d27e10fc453f6709 506B
342f55c8f0bbc1cc02a9e5e896311683e86c98 534B
3c07d12771766dbb4b0f6dfeb01bdc8ca8b71c 579B
3e3ac6fbebcf7c89f81b727404fa6a120a7068 482B
3f8f71293007655b25a00eddede730da90adaa 2KB
44fc6ea98e03062b7be36946f5a97d40ef7b91 2KB
4535db43ac458d1f14c7e3f1692f5681fe2902 3KB
47d29d8e039b5d487a7ad73ab642b4c6e6869d 160B
4b6fa39d9477a058083fd9de537f7ee2c19d9a 254B
4c4b92edf8f3ecb05505e3c6debc04a71a28a1 254B
4e90539e4d2c3d05b8dfe022d03008f322d37b 152B
58e4c988cfc921abbf6ea5b98c2729a6b9dc78 3KB
5b902e88fb16197a4118342aa922c62a35fc92 78B
5de8d8fde4f2e1430f8858f8a9a25413ad03b3 692B
641b175f654ea61d0741f1a01226ad549210ee 91B
65bbbfe91916053b42c8eb49c30205b41c3345 253B
677220477ae0768d485a76db91f4c134c376ca 107B
6966776993cb7a6c6187caefeb0b4dbdf61666 551B
6fddff1165cf92b1bf86b517258d22207adf77 3KB
7a819e8fc2d6a14f36a414dfd21f2b61ae349d 197B
7c150f42f1523d49141c1ee2302ae771c39f1d 529B
7c8a55d8228a201e6853ae052f8c0bf03362e6 193B
7e389eb3f44636e51e8d56a1156d7af9d5e1be 163B
80d998780beb3322e793313a0e52b064ffa429 545B
81bcdf8a18e0fc8e40a37e6c7d24f7f0372f0b 253B
8b820a5eefb1f31c631e3f22c2a919c7601945 106B
8f0567f706c9d11da7f70ade5f28af9c10a615 66B
8f7ac621f5cd1955619888442e3d69e88a8ce5 693B
90e9725baccb7f84c84ca2fe60cdd41675f96a 255B
9161565936c74f50b44a52f9be62e583ea721f 643B
92e00824c31d41d54fe80e262ca43e42539635 901B
93c8054ec01bb81e2b60d54feb07067abffba8 3KB
9523a5f551bf2107631772da73b83f044dc322 581B
9606d338a6039b539e1a20bbd7a8ed2d4c294c 254B
96b82da4a93caef3c0029dbbb50f168dcab67c 92B
9aeaaa99dde09a4474ed6feb096effb32b7aba 626B
9bc700b7c030411522d7645c97444a9b104567 168B
9f6bd91c566a82aafca2bd3a59a0eb209d1b0f 255B
a3f24ecb212c59f893cfc91633e69a7a92dc18 3KB
a4d5b975dd1eae375875b0b9bdddfce777c3a0 186B
a7784820202da01919219025a4379052fa820d 550B
a8b04cc8a1701badaeaeaf624dff8fd4272a9f 65B
ab641885d85789b3d9f6c72a0b736ca0d8287b 255B
b472e3659400e64d9e5328b81d206c63e68635 162B
b7c21903ffbd8f0fff9dada0504f98f778c18b 1KB
BagFile.bag 25.9MB
be2239379e088b7f073856c57863d4d02e74a3 583B
c246fba507ab9591692f38b09956fc14934f31 3KB
c6079f100ae3db152e6dfbe3179880ab81da96 260B
c6ffbe0d070550257a360b52e60793fc97e0ec 581B
c85518eca3db5a9629cb576d869d8c4ac66352 107B
turtlebot_rrt.cc 15KB
vertex_test.cc 3KB
vertex.cc 2KB
rrtpath_test.cc 2KB
cdd5daea135e08d5ff6a965fe5853d423d9546 91B
cfdf5364e033a31d168c4988b132c017c09a3e 254B
Depth.cfg 1KB
config 104KB
config 298B
config 296B
config 282B
config 278B
config 272B
config 271B
model.config 239B
model.config 237B
model.config 236B
model.config 234B
DepthImageToLaserScanTest.cpp 10KB
pointcloud_to_laserscan_nodelet.cpp 9KB
DepthImageToLaserScan.cpp 6KB
mrobot.cpp 6KB
local_rrt_detector.cpp 6KB
local_rrt_detector.cpp 6KB
global_rrt_detector.cpp 5KB
global_rrt_detector.cpp 5KB
test_navig.cpp 5KB
test_detect.cpp 5KB
linedetect.cpp 5KB
depthimage_to_laserscan_rostest.cpp 4KB
DepthImageToLaserScanROS.cpp 4KB
cycle_nav.cpp 4KB
cycle_nav.cpp 4KB
nav_panel.cpp 3KB
共 1034 条
- 1
- 2
- 3
- 4
- 5
- 6
- 11
资源评论
- zhangrelay2019-10-23推荐下载,五星好评!!! 推荐下载,五星好评!!! 推荐下载,五星好评!!!
- ???₯?.Multilover2022-06-17thanks,it's very good!
- AbathurCao2019-05-18好!!!!!!!!!!!!!
- qq_345218592019-09-03非常不错,值得学习
pd很不专业
- 粉丝: 5968
- 资源: 32
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功