Go to file
zhangrelay 11fff5f14a Initial commit 2022-03-14 20:24:35 +08:00
clean_robot Initial commit 2022-03-14 20:24:35 +08:00
explore Initial commit 2022-03-14 20:24:35 +08:00
img Initial commit 2022-03-14 20:24:35 +08:00
.gitignore Initial commit 2022-03-14 20:24:35 +08:00
README.md Initial commit 2022-03-14 20:24:35 +08:00
ros-clean-robot.pdf Initial commit 2022-03-14 20:24:35 +08:00

README.md

自主清洁机器人仿真

适用于Noetic,版权属于原作者,此处引用供学生毕业设计参考。

效果展示视频

【bilibili】

全覆盖路径规划 result

自主探索建图 exploration

安装依赖

sudo apt install ros-${ROS_DISTRO}-turtlebot3 ros-${ROS_DISTRO}-navigation ros-${ROS_DISTRO}-dwa-local-planner ros-${ROS_DISTRO}-slam-karto

noetic:

sudo apt install ros-noetic-turtlebot3 ros-noetic-navigation ros-noetic-dwa-local-planner ros-noetic-slam-karto

使用方法

自主探索

Ubuntu 18.04+melodic 上测试通过。Ubuntu 16.04请参看master分支

补充Ubuntu 20.04+noetic上完全可以。

explore中为自动探索的包这里用的karto slam可以搭配其他的slam算法

自主探索建图示例启动方法

export TURTLEBOT3_MODEL=burger 
roslaunch clean_robot auto_slam.launch

自主探索

清扫启动方法

export TURTLEBOT3_MODEL=burger 
roslaunch clean_robot clean_work.launch

手动导航建图

export TURTLEBOT3_MODEL=burger 
roslaunch clean_robot nav_slam.launch

系统结构

structure

文件结构

clean_robot包中

CleaningPathPlanner.cpp/h为路径规划核心程序,
next_goal.cpp为发布下一个目标点的源程序,
PathPlanningNode.cpp为对路径规划的封装。

整个包会形成两个节点path_planning_nodenext_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*算法找出路径。重复12
  3. 如果没有未清洁区域,算法结束

fcpp

exploration

考虑到真正的清洁机器人不可能让用户操作建图,因此尝试使用自主探索建图。采用开源的explore_lite包实现自主探索建图,其思路为找到可以达到的地图中的位置区域的边界中点作为导航的目标点。该方法在封闭环境中十分迅速!

参考资源

CleaningRobot

SLAM-Clean-Robot-Path-Coverage-in-ROS

polygon_coverage_planning

full_coverage_path_planner