# 自主清洁机器人仿真
## 效果展示视频
[【bilibili】](https://www.bilibili.com/video/BV17z4y1D7Wj)
全覆盖路径规划
[![result](img/result.png)](https://www.bilibili.com/video/BV17z4y1D7Wj)
自主探索建图
[![exploration](img/exploration.png)](https://www.bilibili.com/video/BV17z4y1D7Wj)
## 安装依赖
```bash
sudo apt install ros-${ROS_DISTRO}-turtlebot3 ros-${ROS_DISTRO}-navigation ros-${ROS_DISTRO}-dwa-local-planner ros-${ROS_DISTRO}-slam-karto
```
**Ubuntu 18.04+melodic 上测试通过。**
**Ubuntu 20.04+Noetic 上测试通过.**
**Ubuntu 16.04请参看[master](https://github.com/mywisdomfly/Clean-robot-turtlebot3/tree/master)分支**
## 使用方法
### 下载编译软件包
```bash
mkdir -p clean_robot_ws/src && cd clean_robot_ws/src
git clone https://github.com/mywisdomfly/Clean-robot-turtlebot3.git
cd ..
catkin_make
```
### 自主清扫
清扫启动方法
```bash
cd clean_robot_ws #确保目录切换到clean_robot_ws 目录下,并执行过编译
source devel/setup.bash
export TURTLEBOT3_MODEL=burger
roslaunch clean_robot clean_work.launch
# 如果想要加载自己的地图,用下面这个。 map_file:="你的地图的绝对路径,加载yaml文件。"
roslaunch clean_robot clean_work.launch map_file:="/home/xxx/clean_robot_ws/homemap.yaml"
```
### 自主探索
explore中为自动探索的包,这里用的karto slam,可以搭配其他的slam算法
自主探索建图示例启动方法
```bash
cd clean_robot_ws #确保目录切换到clean_robot_ws 目录下,并执行过编译
source devel/setup.bash
export TURTLEBOT3_MODEL=burger
roslaunch clean_robot auto_slam.launch
```
保存地图, **打开一个新的终端**,原来运行的不要关闭。
```bash
rosrun map_server map_saver -f ~/clean_robot_ws/homemap #-f 后的参数表示存放路径以及名称
```
### 手动导航建图
```bash
cd clean_robot_ws #确保目录切换到clean_robot_ws 目录下,并执行过编译
source devel/setup.bash
export TURTLEBOT3_MODEL=burger
roslaunch clean_robot nav_slam.launch
```
保存地图, **打开一个新的终端**,原来运行的不要关闭。
```bash
rosrun map_server map_saver -f ~/clean_robot_ws/homemap #-f 后的参数表示存放路径以及名称
```
## 系统结构
![structure](img/structure.png)
## 文件结构
`clean_robot`包中
`CleaningPathPlanner.cpp/h`为路径规划核心程序,
`next_goal.cpp`为发布下一个目标点的源程序,
`PathPlanningNode.cpp`为对路径规划的封装。
整个包会形成两个节点`path_planning_node`与`next_goal`分表示全覆盖路径规划器与目标点发送程序。
Launch文件中
`clean_work.launch`表示启动清洁工作,
`auto_slam.launch `表示全自主探索建图(全自动不需要人干预)
`nav_slam.launch`表示导航建图(也可以使用键盘控制建图),
`gazebo.launch`表示启动仿真环境,
`move_base.launch`表示机器人的导航栈配置,
`amcl.launch`表示粒子滤波定位系统,
`turtlebot3_navigation.launch`,表示机器人导航系统
`Config` 为路径规划所使用参数的yaml文件,
`param`为move_base所采用的参数文件,
`maps`表示地图文件,worlds为仿真环境。
## 算法思想
### 全覆盖路径规划
将原有的栅格地图无障碍物区域按照机器人大小进行分割,分割后直接对所有分割区域进行遍历即可。(按照一定规则直接进行遍历,不能保证路径最优,可以实现相对较优,完成基本功能)。
1. 如果机器人前方已经被覆盖过了或者是障碍,那么左转或者右转旋转180度接着走,实现S型走,如图5所示。
2. 如果机器人的周围都被覆盖过了,以当前机器人的位置为起点,未清洁区域作为目标点,用A*算法找出路径。重复1,2
3. 如果没有未清洁区域,算法结束
![fcpp](img/fcpp.png)
### exploration
考虑到真正的清洁机器人不可能让用户操作建图,因此尝试使用自主探索建图。采用开源的`explore_lite`包实现自主探索建图,其思路为找到可以达到的地图中的位置区域的边界中点作为导航的目标点。该方法在封闭环境中十分迅速!
## 参考资源
[CleaningRobot](https://github.com/peterWon/CleaningRobot)
[SLAM-Clean-Robot-Path-Coverage-in-ROS](https://github.com/hjr553199215/SLAM-Clean-Robot-Path-Coverage-in-ROS)
[polygon_coverage_planning](https://github.com/ethz-asl/polygon_coverage_planning)
[full_coverage_path_planner](https://github.com/nobleo/full_coverage_path_planner)
没有合适的资源?快使用搜索试试~ 我知道了~
清潔機器人全覆蓋路徑規劃和探索源代碼 将原有的栅格地图无障碍物区域按照机器人大小进行分割,分割后直接对所有分割区域进行遍历
共57个文件
yaml:14个
launch:10个
h:6个
需积分: 9 3 下载量 151 浏览量
2022-07-30
15:06:02
上传
评论 2
收藏 2.24MB ZIP 举报
温馨提示
源代碼结构 CleaningPathPlanner.cpp/h为路径规划核心程序, next_goal.cpp为发布下一个目标点的源程序, PathPlanningNode.cpp为对路径规划的封装。 整个包会形成两个节点path_planning_node与next_goal分表示全覆盖路径规划器与目标点发送程序。 Launch文件中 clean_work.launch表示启动清洁工作, auto_slam.launch 表示全自主探索建图(全自动不需要人干预) nav_slam.launch表示导航建图(也可以使用键盘控制建图), gazebo.launch表示启动仿真环境, move_base.launch表示机器人的导航栈配置, amcl.launch表示粒子滤波定位系统, turtlebot3_navigation.launch,表示机器人导航系统 Config 为路径规划所使用参数的yaml文件, param为move_base所采用的参数文件, maps表示地图文件,worlds为仿真环境。
资源推荐
资源详情
资源评论
收起资源包目录
Clean-robot-turtlebot3-melodic-devel.zip (57个子文件)
Clean-robot-turtlebot3-melodic-devel
turtlebot3_simulations
img
exploration.png 645KB
structure.png 63KB
fcpp.png 21KB
result.png 725KB
turtlebot3
ros-clean-robot.pdf 926KB
clean_robot
config
cleaning_costmap_params.yaml 342B
costmap_common_params.yaml 479B
rviz
turtlebot3_karto.rviz 8KB
turtlebot3_navigation.rviz 12KB
include
CleaningPathPlanner.h 3KB
launch
amcl.launch 2KB
turtlebot3_navigation.launch 886B
gazebo.launch 899B
clean_work.launch 2KB
move_base.launch 1KB
nav_slam.launch 1KB
auto_slam.launch 2KB
maps
clean_room.yaml 136B
clean_room_new.yaml 140B
clean_room_new.pgm 9KB
clean_room.pgm 9KB
param
dwa_local_planner_params_waffle_pi.yaml 915B
dwa_local_planner_params_waffle.yaml 915B
base_local_planner_params.yaml 483B
move_base_params.yaml 205B
global_costmap_params.yaml 172B
costmap_common_params_burger.yaml 332B
local_costmap_params.yaml 243B
costmap_common_params_waffle.yaml 332B
dwa_local_planner_params_burger.yaml 916B
costmap_common_params_waffle_pi.yaml 332B
src
PathPlanningNode.cpp 906B
CleaningPathPlanner.h 3KB
CleaningPathPlanner.cpp 25KB
next_goal.cpp 6KB
worlds
clean_room.world 17KB
clean_room_new.world 17KB
CMakeLists.txt 7KB
package.xml 3KB
.gitignore 33B
README.md 4KB
turtlebot3_msgs
explore
include
explore
costmap_tools.h 3KB
explore.h 4KB
frontier_search.h 2KB
costmap_client.h 4KB
launch
explore.launch 1KB
explore_costmap.launch 701B
explore_multi.launch 11KB
src
frontier_search.cpp 6KB
explore.cpp 10KB
costmap_client.cpp 9KB
doc
architecture.dia 1KB
wiki_doc.txt 7KB
screenshot.png 24KB
CMakeLists.txt 2KB
CHANGELOG.rst 1KB
package.xml 993B
共 57 条
- 1
资源评论
qoog8m
- 粉丝: 2
- 资源: 85
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功