写在前面
-
本次我们的参赛题目为
基于slam与二维码定位的无线充电机器人
。之所以会做这个题目,是因为我正好在学ROS,手头也有个搭建好了的机器人平台;而我的队友老朱他们实验室是做无线充电的,所以集各家之所长想出了这样的一个题目。要实现机器人自动回充,我的想法是由SLAM建立好机器人的工作环境后,导航至目标区域。在目标区域放置无线充电线圈,机器人到达指定区域后开启无线充电。这样做对机器人导航的准确性要求较高,slam建立的栅格地图的精度就是5CM,机器人实际导航的误差可能会达到10CM甚至更多。而无线充电线圈允许的耦合误差为1到2CM。为了解决这个问题,我想到了借助机器人的摄像头,进行视觉引导进入无线充电区域。 -
摄像头视觉引导,为了得到准确的机器人的位姿信息,我借助
Kinect
深度相机,识别二维码。机器人可以根据二维码判断出距离墙面的距离和偏差角度。
概述
- 机器人的能源和续航是时下重点关注的问题之一。现如今机器人越来越多的应用到我们的生产和生活当中,传统的移动机器人采用人工更换蓄电池或者接触式电极自动充电的方法。人工充电费时费力,接触式电极自动充电直接将电极裸露在外,有较大的安全隐患,无线充电的方式更加贴合人们的生活。
- 本文设计了一款基于SLAM与二维码定位的无线充电机器人,实现智能化无线充电。本文设计的机器人基于STM32F103C8T6单片机,采用无线充电的方式,使用激光雷达SLAM定位与地图构建技术,结合二维码技术进行视觉引导,使机器人可以自主且快速的进入无线充电桩,实现智能化充电。本作品硬件上主要由自主设计的机器人和无线充电原边、副边电路板3部分组成,机器人进入无线充电区域,开启原边线圈耦合充电,节省了能源,实现智能化无线充电。本系统机器人软件架构基于机器人操作系统(Robot Operating System, ROS)的分布式框架进行开发,按照负责功能的不同可划分为监控系统、上层控制系统和底层控制三个部分,最终实现无线充电机器人的软件部分的设计。
- 无线充电机器人工作模式如下:机器人工作区域建好地图后,在地图上标记无线充电桩的位置,并贴上二维码;在机器人工作的过程中,发现电量不足,向操作系统发出充电请求;机器人进入返航充电模式,采用A*算法导航至目标区域,开启激光雷达,避开障碍物,规划路径;机器人即将到达充电区域时,开启Kinect摄像头,准确引导机器人耦合线圈,同时打开射频收发器件(NRF24L01)通知原边线圈开启,机器人无线充电开始;通过副边电路板上的OLED可实时显示当前机器人电池电量,当电池电量充满,同样通过无线射频信号,关闭原边,无线充电完成。
- 本文设计的无线充电机器人通过激光雷达SLAM定位与二维码技术获取周围环境信息实现精准定位、避障、规划路径等功能,结合无线充电技术实现智能化无线充电,方便快捷且安全,迎合当前大众使用需求。
总体设计框架
移动机器人的硬件设计系统是基于ROS的分布式框架进行开发的,按照负责功能的不同可划分为监控系统、上层控制系统和底层控制三个部分,如图所示。
-
- 监控系统
监控系统位于上位机,运行于Ubuntu操作系统中。监控系统实现的功能主要有:通过键盘控制移动机器人前进、后退和旋转等运动;通过WIFI向移动机器人发布任务;接收移动机器人上层控制系统返回的状态信息以及传感器数据,并通过Rviz三维可视化工具进行数据的可视化。
- 监控系统
监控系统位于上位机,运行于Ubuntu操作系统中。监控系统实现的功能主要有:通过键盘控制移动机器人前进、后退和旋转等运动;通过WIFI向移动机器人发布任务;接收移动机器人上层控制系统返回的状态信息以及传感器数据,并通过Rviz三维可视化工具进行数据的可视化。
-
- 上层控制系统
上层控制系统位于移动机器人的上层控制器,运行于Ubuntu操作系统中。上层控制系统实现的功能主要有:接收上位机发布的控制指令和任务;通过驱动程序获取激光雷达和Kinect相机的数据,并利用采集到的传感器数据完成SLAM、导航避障和地图更新等任务;将速度控制指令通过USB串口下发给底层控制系统,并接收底层控制系统返回的里程计数据。
- 上层控制系统
上层控制系统位于移动机器人的上层控制器,运行于Ubuntu操作系统中。上层控制系统实现的功能主要有:接收上位机发布的控制指令和任务;通过驱动程序获取激光雷达和Kinect相机的数据,并利用采集到的传感器数据完成SLAM、导航避障和地图更新等任务;将速度控制指令通过USB串口下发给底层控制系统,并接收底层控制系统返回的里程计数据。
-
- 底层控制系统
底层控制系统位于移动机器人的底层控制器,运行于实时操作系统μC/OS-II中。底层控制系统实现的功能主要有:接收上层控制系统的速度控制指令;根据速度控制指令控制步进电机转动,实现对移动机器人的运动控制;计算移动机器人位姿,将里程计数据返回给上层控制系统。
- 底层控制系统
底层控制系统位于移动机器人的底层控制器,运行于实时操作系统μC/OS-II中。底层控制系统实现的功能主要有:接收上层控制系统的速度控制指令;根据速度控制指令控制步进电机转动,实现对移动机器人的运动控制;计算移动机器人位姿,将里程计数据返回给上层控制系统。