摘 要:为解决外卖配送“最后一公里”存在的一系列问题,实现真正的无接触式配送,设计了一款基于物联网的送餐机器人。机器人以STM32作为核心控制器,以卡片式电脑(Jetson Nano)作为ROS主控,通过激光雷达、IMU等多传感器融合获取外界信息并结合SLAM导航算法,实现机器人自主导航与实时定位,采用机械臂按电梯的方案实现机器人自主上下电梯,机械臂搭配深度摄像头对电梯按钮进行精准识别。同时机器人搭建了友好的人机交互系统,可通过液晶屏、语音模块、微信小程序为机器人下达指令,并通过4G模块连接云平台,便于用户通过微信小程序查看机器人当前的状态。测试结果表明,机器人能有效提供优质的送餐服务。
关键词:送餐机器人;物联网技术;STM32;SLAM;ROS系统;微信小程序
中图分类号:TP242 文献标识码:A 文章编号:2095-1302(2025)04-00-04
0 引 言
随着互联网平台和餐饮行业的深度结合,餐饮外卖的交易额也在迅速增长。2015—2022年,我国线上外卖行业收入规模从490.7亿上升至9 417亿,增长超18倍。在线外卖占餐饮业收入比重从1.4%上升至21.4%。这意味着外卖市场规模巨大,外卖行业仍有较大的增长潜力[1-2]。
外卖服务如今已覆盖人们生活的方方面面,但在外卖配送上楼方面仍存在一些问题,如在饭点高峰期,由于外卖配送单量较多,外卖员会因为等待电梯时间过长而耽误配送。一些小区和公司为保证业主的人身安全和财产安全,禁止外卖员送餐上楼。随着社会节奏的不断加快,顾客对缩短外卖配送时间的需求不断提高,针对上述问题,研究了一款可以将外卖配送上楼的送餐机器人,以提高外卖的配送效率。
本文介绍了一款基于物联网的送餐机器人,该机器人配备有一个六自由度机械臂,能够控制机器人精准按下电梯按钮,通过多传感器融合各方数据实现其在复杂环境下的稳定运行,用户可以通过微信小程序与机器人通信。
1 系统总体设计
送餐机器人以STM32主控作为核心控制器,在Jetson Nano上运行ROS操作系统,STM32下位机和ROS系统通过串口进行传感器数据和控制指令的交换。
STM32下位机负责采集里程计数据、IMU数据、电源电压数据,并将数据打包发送给ROS系统,同时将数据通过4G模块发送到云平台,根据ROS系统下发的指令利用PID算法控制电机。
Jetson Nano与激光雷达通过串口通信,ROS系统将底层传感器数据与激光雷达点云数据通过Cartographer算法融合,实现实时地图构建,并通过ROS系统自带的功能包move_base实现最优路径规划,利用AMCL实现机器人实时定位,并将控制指令发送给底层下位机[3-4]。
人机交互系统包括液晶屏、语音识别模块、语音播报模块、喇叭,用于提供直观的机器人状态信息与人机交互功能。
送餐机器人自主上下电梯采用控制机械臂按下电梯按钮的方案。机械臂配备有Astra Pro Plus 深度相机与 USB 摄像头,将图像信息特征及相关坐标发送给下位机,下位机通过姿态解算控制机械臂运动,实现精准触碰。
通信模块选用4G模块。将送餐机器人的状态信息发送到微信小程序,通过微信小程序远程控制送餐机器人。系统框图如图1所示。
2 系统硬件设计
送餐机器人的硬件部分主要包括电源模块、主控模块、电机模块、感知模块、机械臂模块、交互模块,系统硬件框图如图2所示。
2.1 电源模块设计
送餐机器人的供电系统选用容量为6 000 mA·h的6 s动力锂电池作为供电电源。考虑到闭合电源开关时,会产生浪涌电压,故选用TVS二极管对其进行有效抑制。采用二极管设计成本较低的防反接电路,通过接入保险丝防止因电流过大导致电路短路。
采用德州仪器出品的DC/DC电源芯片LM2596设计降压电路,该电路最大输入电压为40 V,最大负载电流为3 A,固定输出电压为5 V。该芯片具有高效率、低功耗的特点,可输出稳定的电压。
选用LDO芯片AMS1117-3.3将5 V电压稳压至3.3 V,该芯片最大输入电压为12 V,最大输出电流为1 A,输出电压精度达2%,确保系统可靠运行。为了保证4G模块稳定运行,采用单独一路LDO降压电路为4G模块供电。
2.2 主控模块设计
2.2.1 核心控制器
核心控制器用于控制机器人运动、采集底层传感器信息、进行人机交互、与ROS系统通信、与微信小程序通信,因此需要大量的I/O接口。通过合理选择控制器芯片,能够有效提高系统的稳定性和响应速度。本系统选用意法半导体出品的STM32F407ZET6作为核心控制器,该控制器采用ARM Cortex-M4作为控制核心,工作频率可达168 MHz,拥有144个I/O接口,同时还具有丰富的外设,如Encoder接口、TIM接口、USART接口、I2C接口、SPI接口、ADC接口等,能够驱动机器人高效完成数据采集与处理任务,使系统具有较高的稳定性[5]。
2.2.2 ROS主控
ROS主控用于运行ROS系统进行地图构建、机器人自主导航、图像识别等任务,常见的ROS主控通常有树莓派(Raspberry Pi 4B)和英伟达(Jetson Nano),两者的参数对比见表1。
对比Raspberry Pi 4B和Jetson Nano的参数,Raspberry Pi 4B和Jetson Nano均使用了ARM CPU,Raspberry Pi 4B的Cortex-A72相比Jetson Nano的Cortex-A57拥有更低的功耗和更高的性能,因此Raspberry Pi 4B的CPU性能优于Jetson Nano。在GPU方面,Raspberry Pi 4B采用的是Broadcom VideoCore V,Jetson Nano采用的是128CUDA core Maxwell,Jetson Nano配备的128CUDA core Maxwell GPU在数据处理和图像采集等方面优于Raspberry Pi 4B。由于送餐机器人需要进行SLAM构图和图像处理,于是在ROS主控选型时,更加侧重于主控的GPU性能,故本文设计的送餐机器人采用Jetson Nano作为ROS主控[6]。
2.3 电机模块设计
2.3.1 直流电机
机器人电机型号选用MD36P5,该电机的额定功率为35 W,支持供电电压范围为21~26 V,额定扭矩2.6 kg·cm,自带高精度GMR编码器,通过矫正后能够提供精准的里程信息。
2.3.2 电机驱动
选用D50A模块进行电机驱动,该驱动器有两路H桥,每路通道可以输出12 A电流,可驱动7~24 V的直流有刷电机与机器人所使用的MD36P5电机。STM32通过PWM引脚和普通引脚控制电机。该驱动器具有丰富的保护电路,内置欠压、过压、过热、过流保护电路,控制信号与驱动器通过电气隔离,具有较高的安全性。
2.4 感知模块设计
2.4.1 陀螺仪
送餐机器人选用MPU6050传感器感知姿态信息。MPU6050是一款6轴运动处理传感器,该传感器集成了3轴MEMS陀螺仪、3轴MEMS加速度计、1个数字运动处理器DMP和温湿度传感器,拥有2个I2C接口(通过I2C接口与STM32主控相连并通信)。由于温度变化会导致传感器数据波动,因此由芯片内部温度传感器采集芯片的工作温度,并通过PID算法控制芯片温度,使芯片稳定工作。芯片内置DMP,可以对传感器数据进行融合和姿态解算,降低了主控在运动处理方面的负荷。该芯片具有测量精度高、集成度高、功耗低、功能强大等优点。
2.4.2 激光雷达
根据传感器的不同,SLAM可以分为激光SLAM、惯性导航SLAM、视觉SLAM。本文的送餐机器人选用激光SLAM,激光雷达选用镭神M10P,采用TOF方案,具备更高的稳定性,能够得到25 m范围内360°环境下的二维信息,扫描频率高达12 Hz,测量精度为±3 cm。该雷达不仅定位精度高,还支持网口数据传输。送餐机器人的激光雷达通过网口与Jetson Nano连接,使数据传输更稳定、更迅速。
2.5 机械臂模块设计
2.5.1 摄像头
采用机械臂按电梯按钮的方案实现了送餐机器人自主上下电梯的功能,机械臂要实现自主按电梯按钮,除了获取二维平面信息,进行推理和处理得到按钮的坐标信息,还需要获取每个像素点到摄像头的距离数据,以获得准确的三维空间信息。因此机械臂配备的摄像头选用Astra Pro Plus深度相机,深度相机通过USB 3.0和Jetson Nano连接。
2.5.2 舵机
机械臂选用ES08MD数字舵机。在4.8 V供电电压下,扭矩可达1.6 kg·cm。ES08MD带有数字控制器,可以通过PWM信号控制舵机的转动角度。在舵机的控制电路中,选用SS8050三极管搭建开关电路,通过STM32输出PWM信号到三极管的基极,控制三极管导通或截止;集电极与舵机控制引脚相接,从而控制舵机转动。采用三极管间接控制舵机,可以隔离控制信号(将STM32和舵机之间进行电气隔离),利于保护核心控制器。三极管可以放大信号,增加驱动电流,避免引脚驱动电流过低造成舵机无法工作的情况[7]。
2.6 人机交互模块设计
为了提供友好的人机交互体验,采用触摸液晶屏、语音识别模块LD3320、语音播报模块SYN6288等组建7英寸LCD人机交互系统。7英寸LCD HDMI显示屏通过HDMI线插入Jetson Nano的HDMI接口,可实现触摸功能,也可为屏幕供电。语音识别模块LD3320通过串口与STM32通信。语音播报模块SYN6288通过串口与STM32通信。在模块的SP引脚接上3 W/8 Ω的喇叭,将模块的BH引脚与STM32的输入引脚相连,可通过检测引脚的电平获取模块的状态。
4G模块选用了移远公司出品的EC200S模块,其下行速率为10 Mb/s,上行速率为5 Mb/s,采用独立3.3 V电源为4G模块供电。该模块支持WiFi Scan定位,能够提供机器人所在位置的经纬度信息。
3 系统软件设计
3.1 核心控制器软件设计
系统上电后,配置和初始化系统时钟、I/O、I2C、SPI、定时器、串口、ADC等外设接口,然后打开定时器中断和串口中断,通过串口向4G模块发送AT指令,连接云平台,设定每间隔500 ms便将机器人的状态信息通过4G模块发送到云平台。
机器人采集传感器数据前,通过ADC外设采集电压检测电路的电压,将采集的电压经过换算得到锂电池电压,当电压小于22 V时,利用软件失能电机,将电压数据经串口上发至ROS系统,并驱动语音播报模块经串口发送指令,播报电量不足的提醒。若电压大于22 V,则通过I2C协议驱动MPU6050获得机器人的姿态信息,读取和清空硬件编码器数据,并在读取后将其换算为电机转速。采集完传感器数据后,将电压信息、姿态信息、里程计信息通过协议打包发送给ROS系统。当串口中断收到ROS系统或者微信小程序下发的控制指令时,则进入解析指令程序,根据通信协议解析下发的指令,得到机器人各轴期望的运动速度,经运动解算得到四个电机的期望转速,结合实际转速通过PID算法得到四个电机的PWM占空比,然后输出PWM信号至电机驱动模块,从而实现对机器人的控制。核心控制器程序流程如图3所示。
3.2 4G模块软件设计
要实现4G模块上云,首先要在阿里云平台创建产品和设备,并查看设备的三元组参数、IP地址、端口号,通过密码生成软件获得MQTT连接密码,之后修改MQTT的参数,经由AT指令使4G模块利用MQTT协议连接云平台,此时可以在设备列表看到在线的设备。4G模块只有订阅相关主题,才能获取云平台发送的数据[8]。
3.3 微信小程序软件设计
微信小程序通过云平台和4G模块通信,微信小程序通过MQTT协议连接云平台,并订阅相关主题,接收4G模块发送的信息(云平台相当于信息中转端)。外卖员可通过微信小程序填写外卖信息,送餐订单将根据手机号同步到用户的微信小程序,实现无接触投放。用户通过微信小程序查看外卖的状态信息。微信小程序界面如图4所示[9-10]。
4 测 试
送餐机器人由铝型材和亚克力板材组建,实物如图5所示。为测试该机器人可否在颠簸路段行走,首先运行送餐机器人的建图功能,发现送餐机器人能够进行2D构图,并实时保存地图,建图效果如图6所示。建图完毕后,测试送餐机器人的整体功能,发现该机器人能够精准识别并按下电梯按钮,实现自主上下电梯,图像识别效果如图7所示。同时,机器人还可自主导航,微信小程序能够正常接收机器人的状态信息,并控制机器人运动。
5 结 语
基于物联网的送餐机器人具备2D地图构建、自主导航、实时定位、远程控制等功能,且稳定性高、工作效率高、响应速度快,能有效提供无接触送餐服务。
参考文献
[1]于姗姗. 外卖平台“二选一”的社会福利和竞争效应分析[D].北京:北方工业大学,2023.
[2]邱斌. 外卖平台的竞争战略研究[D].南昌:华东交通大学,2018.
[3]陈歆颖. 送餐机器人嵌入式控制系统设计[D].南京:南京林业大学,2023.
[4]梁明亮,张凯,王云飞. SLAM智能机器人关键技术的研发[J].电子制作,2022,30(9):82-84.
[5]邓辉,李烨.基于STM32F407的智能温室大棚系统[J].中国新技术新产品,2023(14):37-39.
[6]马啸龙. 面向送餐的移动机器人的SLAM与路径规划方法研究及应用[D].兰州:兰州大学,2024.
[7]罗国庆.三极管电流放大原理教学的改进[J].知识文库,2023(3): 103-105.
[8]韦洪浪,陈基恒,韦宁燕.基于阿里云平台的多参数实时在线水质监测系统[J].大众科技,2022,24(4):7-10.
[9]张耕问,钱昕彤,崔坤鹏.一个基于微信小程序的海外拼团购物平台的设计[J].电脑知识与技术,2023,19(33):29-31.
[10]成澜.基于OneNET物联网云平台与MQTT协议的智能家居模型通用控制小程序设计[J].电脑与电信,2022(7):10-13.