本文是机器人高效进阶系列的收尾篇,我们将综合运用前面所学,完成机器人迷宫寻宝的作业。
本文参考资料:
(1)ROS高效进阶系列
(1)有一个10m * 10m小迷宫,里面有一个宝物(红色球),在迷宫右小角有一个机器人小车。机器人不知道宝物的位置,也不知道迷宫的情况,他需要自己去找到宝物。
(2)解决这个问题,需要一个拓扑图和系统时序图
gazebo+robot:使用gazebo创建了一个仿真迷宫环境,里面添加了一个轮式机器人,机器人有laser和camera两个传感器,并且支持通过 /cmd_vel 控制机器人移动
gmapping+move_base :实现了机器人自主导航和建图
exploring_maze:系统启动时,exploring_maz 控制机器人自主随机探索迷宫
object_detect:使用opencv图像算法,实时检查机器人前后camera图像,一旦检测到红球,则发出红球的在图像内的位置和大小。
move_to_target:一旦接收到 object_detect 传来的红球在图像内的位置信息,说明机器人溜达时遇到了宝物,则向 exploring_maze 发送停止探索的指令,并接管机器人的控制,通过 /cmd_vel 控制机器人向宝物进发。
在机器人向宝物进发的过程中,object_detec t实时发送宝物在图像内的大小,一旦超过某个值,则视为拿到宝物,此时 move_to_target 向 exploring_maze 发送回家指令。
tts_subscribe:接收 move_to_target 传来的文字指令,然后语音播报。
(1)创建 robot_hunt_maze 包
cd ~/catkin_ws/src
catkin_create_pkg robot_hunt_maze std_msgs geometry_msgs move_base_msgs actionlib message_generation rospy roscpp
// 创建各个文件。。。
所有的文件托管在本人的github上:robot_hunt_maze,由于文件众多,这里不再详细赘述,代码自说明一切。
(2)编译并运行 robot_hunt_maze
cd ~/catkin_ws/src
catkin_make --source src/robot_hunt_maze
// 启动gazebo仿真环境
roslaunch robot_hunt_maze mbot_gazebo.launch
// 启动gmapping+move_base
roslaunch robot_hunt_maze navigation_with_gmapping.launch
// 启动自制模块
roslaunch robot_hunt_maze go_maze.launch
在溜达的路上碰到了红球,然后去拿(撞一下),拿到了,然后回家
本文样例托管在本人的github上:robot_hunt_maze