时间:2024-05-04
王春平, 汪家琪, 高金凤
(1 浙江理工大学科技与艺术学院, 浙江 上虞 312369; 2 浙江理工大学信息科学与工程学院, 杭州 310018)
随着计算机信息与机器人技术的快速发展,机器人应用范围从最初的军事行业延伸到现在的医疗、工业、服务业等多个领域[1],逐步实现机器人的普及化,如军用侦察机器人、医疗消毒机器人、工业巡检机器人和餐饮服务机器人。 其中,机器人在服务业领域的作用尤为突出。 在许多大型的超市,传统的手推车购物和排队等待人工收银的方式不仅无法满足人们愉悦购物的需求,还会给超市造成一定秩序维护和服务成本上的负担。 另一方面,机器人操作系统(ROS)是构建机器人应用程序的一套软件库和工具库,是编写机器人软件的灵活框架。 ROS包含驱动程序、先进的算法、强大的机器人开发工具,而且都是开源的,这就进一步地促进了机器人技术的发展[2-3]。
本文设计了一种基于ROS 的超市自助购物机器人,在传统的超市购物机器人[4]基础上进行了结构和功能的改进。 该机器人分为购物层和运动层,两层之间用4 根不锈钢钢管支撑。 购物层以树莓派3B+开发板为核心,与扫码枪和安装了自主结账软件的移动终端配合使用,从而实现智能扫码结账的功能。 运动层以i7 处理器的mini 工控机为核心,结合ROS 和远程控制设备实现该超市购物机器人的地图构建、语音导航、人体跟随。 远程控制设备和安装了自主结账软件的移动终端均是通过无线局域网络与i7 处理器的mini 工控机和树莓派3B+开发板建立连接,具有高度的灵活性和移动性。
自助购物机器人系统是由购物层和运动层组成的,购物层以树莓派3B+开发板为核心,扫码枪通过无线局域网与安装了自主结账软件的移动终端连接完成结账;运动层以i7 处理器的mini 工控机为核心,通过无线局域网络与远程控制设备连接,并利用思岚A1 激光雷达和kinect 一代深度摄像头实现地图构建和人体跟随。 此外,该超市购物机器人上装配语音交互模块和底层控制模块,可执行语音导航控制和底层的硬件驱动等功能,具体框架结构侧视图如图1 所示。
图1 基于ROS 的超市自助购物机器人框架Fig. 1 Self shopping robot diagram of supermarket based on ROS
系统测试的时候,树莓派3B+开发板上除了接入扫码枪,还外接了多种输入设备包括键盘、鼠标、U 盘。 除此之外,由于要在树莓派3B+开发板上执行扫码枪读取条形码信息功能,需要将该信息传输给移动终端,这2 个功能会出现冲突,无法同时运行。 这一难点可以借助于扫码枪配对程序中双线程方法来解决。 一个线程获取扫码枪传来的条形码数据,另外一个线程将该数据传输给移动终端。
对于移动终端App 的设计,采用Appinventor 在线编辑软件。 在进行自助结账时,Appinventor 中字符串类型的“价格”不需要转换成数值类型就可以直接进行相加减。 移动终端App 一共设有3 个界面,通过App 上的按钮进行切换。Screen0 是主页界面设计,Screen1 是功能界面,Screen2 是付款成功界面。自主结账软件设计流程如图2 所示。
图2 自主结账软件设计流程图Fig. 2 Software design flow chart of self-checkout
硬件电路主要包括4 大模块,即底层控制模块、电源模块、电机驱动模块、惯性测量单元(IMU),如系统的硬件电路框架如图3 所示。 在购物层端,扫码枪和安装了自主结账软件的移动终端分别通过USB 和无线局域网络与树莓派3B+开发板相连,更侧重于软件设计,仅需设计电源模块的电路图。 在运动层端,思岚A1 激光雷达、Kinect 一代深度摄像头、语音交互模块均是通过USB 直接与以i7 处理器的mini 工控机相连,且远程控制设备通过ssh 协议与工控机相连,硬件设计则着重体现在电源、底层控制以及集成在其中的电机驱动模块与惯性测量单元。
图3 购物机器人系统的总体结构框图Fig. 3 The structural block diagram of the shopping robot system
1.3.1 底层控制模块
STM32F103RCT6 是该超市购物机器人运动层底层控制模块的核心。 底层控制模块包含了传感器数据的获取、运动学解算、电机控制等底层驱动功能和机器人的运动功能[5-10]。 底层控制模块向上层的i7 处理器mini 工控机发送机器人的里程计信息、电机转速信息、IMU 传感器数据、电池电压数据等传感器信息。 工控机向底层控制模块发送速度指令和里程计校准参数等高级控制数据。 STM32F103RCT6的电路如图4 所示。
图4 STM32F103RCT6 电路图Fig. 4 The STM32F103RCT6 circuit diagram
1.3.2 电机驱动模块
电机驱动模块采用的是TB6612 驱动模块,是基于MOSFET 的H 桥集成电路。 TB6612 设计原理如图5 所示,效率远高于晶体管H 桥驱动器。 相比L298N 的热耗性和外围二极管续流电路,无需外加散热片,效率高,外围电路简单,只需外接电源滤波电容就可以直接驱动电机,利于减小系统尺寸。 具体的电路如图6 所示。
图5 TB6612 原理图Fig. 5 The schematic diagram of TB6612
图6 电机驱动电路图Fig. 6 The motor drive circuit diagram
1.3.3 惯性测量单元
MPU6050 是惯性测量单元的一种,在内部整合了三轴陀螺仪和三轴加速度的传感器,并且具有一个数字运动处理引擎,方便姿态的解算,并且可以降低主处理器的运行负荷,三轴加速度可以测量3 个方向的直线加速度,三轴陀螺仪可以测量3 个轴的旋转角速度,通过姿态解算算法实现姿态的解算[11]。 具体的设计电路如图7 所示。
图7 MPU6050 电路图Fig. 7 The circuit diagram of MPU6050
有关电机、底层控制模块、TB6612 驱动模块、MPU6050 的正确连接方式见表1。 此处TB6612 的VM1 端口接12 V,STBY 端口接5 V,VCC 端口接5 V,PWM 连接2 组电机,PWMA 接A 组,PWMB 接B 组。
表1 各模块的引脚分配Tab. 1 Pin assignment of each module
1.3.4 电源模块
本系统设计了2 个电源模块,分别为购物层和运动层提供可靠的工作电压。 不仅需考虑电压范围和电流容量等基本参数,还要在电源转换效率、降低噪声、防止干扰等方面进行优化。 购物层采用12 V、8.4 A 锂电池,通过降压模块,将其转换成5 V 固定电压驱动树莓派3B+开发板;运动层采用12 ~48 V、22 A 的锂电池,通过12V 电源稳压模块给i7 处理器的mini 工控机供电。 然而在底层控制模块里,不是所有的子模块都是12 V 供电的。 比如MPU6050 的标准供电电压是5 V,因此需要一个电压转换模块将12 V 电压转换成5 V 稳定电压。 具体的电压转换电路如图8 所示。
图8 电压转换电路图Fig. 8 Voltage conversion circuit diagram
机器人运动层端的算法设计主要包括Gmapping 建图算法、语音导航算法、kinect 一代深度摄像头人体跟随算法。 整个系统的程序运行流程如图9 所示。
图9 系统程序流程图Fig. 9 Flow chart of system program
Gmapping 是一种常用的同时定位与地图构建(Simultaneous Localization and Mapping,SLAM) 算法,通过激光雷达等传感器收集环境信息,实现对机器人所在环境的建图和定位。 Gmapping 算法的核心思想是将地图构建问题转化为一个最优化问题,通过优化机器人在环境中的运动轨迹和地图中的障碍物分布,得到一个最优的地图模型。 Gmapping 算法的实现分为2 个步骤:机器人定位和地图构建。
Gmapping 算法通过对机器人位置的精确估计,来纠正激光雷达传感器测量中存在的误差。 具体采用基于粒子滤波器的定位算法,在概率分布上进行多次采样和更新,得到机器人位置的最优估计。
Gmapping 算法地图构建通过对激光雷达测量数据进行处理,提取环境中的障碍物信息。 具体将激光雷达测量数据转换为栅格地图,并利用贝叶斯滤波算法来更新栅格地图中的障碍物分布。 同时,Gmapping 算法还会对地图进行优化,使得机器人的轨迹更加顺畅,并提高地图的准确性和稳定性。
语音导航算法用来完成地图构建之后的就位和智能扫码结账之后的回仓,语音交互模块带声源定位功能,每次对着语音交互模块说话时,会出现一个最亮的灯,代表此时最亮灯方位声源最强。 语音导航算法将A*全局路径规划和DWA 局部路径规划导航算法与语音控制算法相结合。
机器人语音导航包含以下步骤:语音识别、自然语言理解和语音合成。 机器人利用麦克风等传感器感知用户的语音指令,通过语音识别技术将语音信号转换为文本形式,以方便后续的处理和分析。 在自然语言理解步骤中,机器人会对用户输入的文本进行分析和理解,实现对用户需求的识别和分类。将文本转换成信号发送给运动控制器。 机器人需要考虑到用户可能存在的多义性或歧义性,确保识别的准确性和稳定性。 最后,机器人将处理好的文本信息转换为语音信号,并通过扬声器等设备输出给用户,实现与用户的自然语音交互。
人体运动跟随算法通过机器人对人体姿态、移动速度和距离等信息的感知和分析,实现对人体运动的预测和响应,达成机器人的跟随功能。 本文的设计运用了开源的turtlebot_follower 功能包。 该功能包利用深度摄像头反馈的点云图,计算一定区域内的点云中心坐标作为目标跟随点,并通过深度学习技术识别出人体的位置和大小,还考虑了存在的干扰物或障碍,根据坐标和设置的安全距离控制底盘实现移动跟随。
机器人对人体的姿态、运动速度等信息进行分析,预测人体的下一步运动方向,从而决定机器人的跟随策略。 在此过程中,机器人需要利用计算机视觉等技术进行数据处理和分析,实现对人体运动的实时跟踪。 实验证明Gmapping 建图效果与人体跟随测试都很成功,实际测试结果如图10 所示,图11为基于ROS 的超市购物机器人实际系统侧视图。
图11 基于ROS 的超市购物机器人系统侧视图Fig. 11 The side view diagram of supermarket self-shopping robot system based on ROS
本文设计了一款基于ROS 的超市自助购物机器人,双层结构设计既可以让购物层和运动层各负其责、互不干扰,又能大大节约布局空间。 经过实际测试,该机器人能够较好、较快地完成地图构建、语音导航、人体跟随、智能扫码结账等功能。 最大的不足就在于缺乏构建基于ROS 的多机器人系统标准方法,今后的研究可着重聚焦在基于ROS 的多机器人协同控制算法与实际测试。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!