自适应仓库值守机器人
2021-09-06徐雨桐赵金鹏靳文庸千承辉
徐雨桐 赵金鹏 靳文庸 千承辉
(吉林大学 仪器科学与电气工程学院,长春 130061)
0 引 言
目前,机器人作为缓解社会压力、推动民生科技的关键技术,早已成为人类的伙伴[1-2]。其中服务型机器人可实现智能控制中的多方面应用,例如采用SLAM(Simultaneous Localization And Mapping)技术进行建图,利用蒙特卡罗定位算法进行定位,调用OpenCV 技术进行场景识别等。但因这些技术对硬件要求较高,程序可移植性和兼容性较差,且当面对陌生环境时需手动操作键盘建图,故不适合进行二次开发。如果在系统中加入控制器与传感器数据采集模块,就需要匹配操作系统协调并保证各个子程序的正常运行,控制和交互信息的有效传递,以及异常和错误的及时处理等,否则很难实现复杂的应用[3-4]。
笔者利用光电传感器返回的信号模拟键盘控制信号,结合SLAM 技术实现机器人自主建图功能,采用模块化编程的思想设计实现多个输入输出接口,提高机器人系统的兼容性、扩展性和程序可移植性,设计可搭载摄像头和声音传感器等多个模块的自适应仓库值守机器人。
1 系统整体结构及其硬件组成
自适应值守机器人系统整体结构如图1 所示,系统供电采用24~26 V 锂电池,由上位机(微处理器和STM32 控制器)、下位机(运动控制)、信号采集模块(激光雷达、陀螺仪和光电传感器等)、电源模块(电源供给和电压显示)、通信模块(远端显示及无线通信)和外搭载模块(声音及图像检测)等6 个硬件模块组成。
图1 系统整体结构Fig.1 The overall structure of system
图1 中,i5 微处理器内装配ROS(Robot Operating System)操作系统,配有无线网卡、USB、HDMI(High Definition Multimedia Interface)等接口;系统由二维激光雷达和九轴姿态传感器完成导航,STM32处理器采集光电传感器信号辅助完成自主建图;电源模块提供给上下位机模块匹配的电源,可实时监测电压值并显示;摄像头模块支持物联网云平台使用,可实时回传机器人周围景像;声音检测模块监测周围音量并输出相应的电压值,支持物联网云平台实时监测是否有异常响声;三轮全向底盘的电机采用带编码器的直流电机,轮子采用麦克纳姆轮,控制机器人360˚平面运动。值守机器人系统通过传感器获取机器人姿态信息和周围环境信息,搭载摄像头、噪声采集等多种监测传感器,通过算法实现自主建图、导航、自主回归和远程监控等功能。
2 系统模型及软件设计
2.1 机器人下位机模型选择
采用Arduino 控制器进行机器人底盘控制,利用麦克纳姆轮实现机器人的稳定、全向运动,其运动模型如图2a 所示。Arduino 控制器具有丰富的标准化接口,支持SPI(Serial Peripheral Interface)、IIC(Inter-Integrated Circuit)和RS232 等通信方式,以规范的标准库和丰富的功能包提高程序的可扩展性和可移植性。
图2 三轮全向底盘运动模型Fig.2 Three-wheel all-directional chassis motion model
图2 中A、B、C 代表机器人的3 个轮子,坐标系均为位置坐标系。机器人X方向和Y方向的速度分量,以及运动的方向角为
其中Va,Vb,Vc分别为A,B,C 3 个轮子的速度,机器人行进过程中的坐标变换关系如图2b 所示[5]。机器人在真实参考框架XOY下的终点位姿
2.2 上位机软件设计
该系统主要采用i5 微处理器运行上位机软件,软件结构如图3 所示。具体功能及其实现方式如表1所示。上位机主要基于Ubuntu 环境进行ROS 操作系统,三维可视化平台Rviz 显示所建地图、机器人位置等信息,远程控制软件Teamviewer 将Rviz 所显示信息传送到远端显示器,实现远程实时监控。
图3 上位机软件结构Fig.3 PC software structure
表1 功能实现对应表Tab.1 Function realization corresponding table
3 SLAM 与键盘模拟技术
3.1 SLAM 技术
该机器人涉及到的SLAM 技术的框架如图4 所示。首先对从里程计、激光雷达以及IMU(Inertial Measurement Unit)获得的数据进行信息处理,其中里程计数据用于对激光雷达由于移动而产生的数据畸变进行校正。然后利用传感器获得的数据计算当前帧与之前用特征点缓存成的小地图之间的位置关系,完成前端配准,再利用运动观测方程进行后端非线性优化。
图4 SLAM 框架Fig.4 SLAM framework
其中运动观测方程为[6-7]
其中xk为相机的位姿,uk为输入数据,yj为路标,zj,k为图像上的像素位置,wk,vk,j均为噪声项。SLAM框架采用回环检测消除积累误差,提高系统的稳健性和精度,最终实现建图功能。
3.2 借助光电传感器键盘模拟技术
采用光电传感器和STM32 控制器实现沿右侧墙壁行进和避障的功能,STM32 与i5 微处理器采用串口通信方式连接,i5 微处理器读取控制信息,利用Python 中的virtkey 库进行键盘模拟,实现控制机器人建图,即机器人自主建图[8-9]。其中光电传感器和机器人状态对应表如表2 所示。
表2 状态对应表Tab.2 State correspondence table
表2 中K1 为正前方光电传感器,K2 为右前方光电传感器,K4 为正右方光电传感器,K5 为右后方光电传感器,光电传感器为0 时表示检测到障碍物,为1 时表示未检测到障碍物。
4 系统测试
由远端监控Rviz 界面以观察建图效果,检验值守机器人的性能[10]。图5a 为手动建立,图5b 为机器人自主建立。图5 中数据显示机器人位置等状态信息,较粗的轨迹为近期机器人走过的路线,较细的轨迹为规划将要走的路径。经对比测试,自适应值守机器人自主建图与手动建图的相似度达95%以上,满足系统技术指标要求。
图5 Rviz 建图界面Fig.5 Rviz drawing interface
机器人外观如图6 所示。机器人多次回到原点时系统通过Rviz 显示的坐标如表3 所示,其中理想坐标值为(-0.130 00,0.010 87,0.000 00)。表3 中的误差换算成以m 为单位时均小于0.3 m。
表3 定位误差Tab.3 Positioning error
图6 机器人外观Fig.6 Robot appearance
图6 中1 为电压显示模块,2 为激光雷达,3 为STM32,4 为电源模块,5 为总开关,6 为i5 微处理器,7 为九轴陀螺仪,8 为光电传感器,9 为Arduino,10 为电池。
由于需要考虑到激光雷达的精度以及扫描速度问题,机器人的行进速度为0.3 m/s。笔者对不同面积的仓库(机器人建图过道宽度不超过16 m)进行巡逻测试,每个面积数的地图重复测试10 次以上,得出在一定范围内的平均时间,结果如表4 所示。
表4 巡逻测试结果Tab.4 Patrol test results
虽然该测试的面积相对较小,但结果证明该机器人在功能上完全可以实现仓库巡逻,而当搭载容量更大的电池时将可以实现更大面积仓库的巡逻。
5 结 语
笔者设计的自适应值守机器人实现了自主建图、自主导航、避障、回归原点、异响监测和机器人当前位置状态及环境信息实时回传等功能,为机器人提出了一种新的自主建图的方法,使其对陌生环境具有一定的感知和适应能力。该系统具有良好的扩展性和可移植性,可针对不同需求进行适合的二次开发。