一种基于全景视图的智能物流机器人设计

2023-12-14 07:39冀风州肖广兵
河北软件职业技术学院学报 2023年4期
关键词:电路设计全景电路

冀风州,肖广兵

(南京林业大学 汽车与交通工程学院,南京 210037)

2021 年12 月12 日,国务院印发《“十四五”数字经济发展规划》,提出要大力发展智慧物流。智能物流机器人可以说是智慧物流的核心要素。基于视觉方案的AGV 智能物流机器人,在行业中被广泛关注。张向鸿等提出了基于模糊控制的单目视觉和激光雷达导引AGV 的运动控制方案,该方案使用单个摄像头,导致在近距离时会失去图像信息,需要依靠激光雷达进行定位。[1]本文提出了一种基于图像拼接技术生成全景图像的方案,进行物流机器人的循迹与避障。所谓图像拼接技术就是将单一图像融合成一幅图像。借助全景视图进行全景感知,物流机器人就可以获得更多的视觉信息,有助于机器人的控制器在循迹过程中做出更准确的响应。

本文以树莓派为上位机,LPC54606 单片机为运动控制系统,搭建物流机器人的主控电路、电源电路以及驱动电路等。

1 整体设计

物流机器人主要分为硬件系统和软件系统两个部分。硬件系统构成了物流机器人的实体部分,承担着机器人的运动和显示功能;软件系统是物流机器人的核心部分,通过图像拼接算法和运动控制算法对物流机器人进行轨迹控制。

智能物流机器人系统的硬件部分主要由机械结构和电路部分组成,其整体机械结构如图1 所示。图中“3”为机械臂,实现物流机器人的货物抓取功能,“2”为底盘结构,负责机器人的运动功能,两者共同构成了智能物流机器人的机械系统。底盘结构的框架部分使用3D 打印技术制作,底部安装了四个如图2 中的“1”所示的万向轮,它特有的结构允许智能物流机器人在不改变车体方位的情况下在x 轴和y 轴自由移动,强化了智能物流机器人的灵活性。

图1 物流机器人机械系统

图2 MCU 主控芯片电路图

2 电路系统设计

物流机器人的电路系统由MCU 主控芯片最小系统电路、IMU 惯性单元电路、磁编码器电路和其他电路系统组成。

2.1 MCU 主控芯片最小系统电路

图2 为本文设计的LPC54606 芯片的最小系统电路图。因为单个微控制器无法正常工作,所以外围电路的存在是必不可少的。智能物流机器人的主控制板搭建如下。

其中,LPC54606 的烧写调试接口采用SWD(Serial Wire Debug)串行调试,电路接口使用一个4pin(J4)的接口引出,该电路借鉴了STM32 的电路设计,并进行了改进。如图3 所示。

图3 调试接口电路

由于在研发阶段和实际测试阶段都有可能出现程序死机和跑飞的现象,为了防止这类情况的出现,缩短研发和测试时间,需要考虑复位功能的设计。本方案参考芯片电路设计,并进行了微小的改动,设计了复位电路(如图4 所示),可以在遇到上述情况后快速使系统恢复到初始状态。

图4 复位引脚参考电路图

为了交互方便,本方案选择了按键复位的方式。这样既能够避免误触,也能够在意外情况发生时快速响应。为了防止意外复位的情况发生,复位引脚处需要增加一个上拉电阻,避免影响到测试人员的判断,复位电路如图5 所示。

图5 复位电路图

2.2 IMU 惯性单元电路

智能物流机器人在运动过程中需要获得自身的位置以及运动状况,便于进行后续控制。IMU 惯性单元由MPU6050 和AK8975L 三轴磁力计电路共同组成,帮助智能物流机器人获取转向角度以及自身的位置,其电路设计如图6 所示。

图6 惯性单元电路

2.3 磁编码器电路

AS5048a 磁感应编码器芯片设计可应用于本方案,该芯片使用SPI 信号总线与LPC54606 单片机通信。为了防止SPI 总线出现通信出错的情况,它还额外引出了一根PWM 总线。磁编码器的电路设计图见图7。

图7 编码器电路图

编码器电路与系统电路集成到了同一块PCB板上,因此不用考虑安装时的位置和外形设计,从而大大减轻了工作量。

2.4 其他电路

作为完整的智能物流机器人电路系统,还需要一些辅助电路。其中,电源模块作为物流机器人系统的核心能源,直接决定着整个电路系统的运行状态。

电源的种类不一样,其使用特性也会不同,电源大致可以分为开关电源和线性电源两类。线性电源的优势明显:工艺成熟,工艺制作成本也较低,稳定度特别高,波纹电流很小,能量消耗较少,而且应用比较灵活,既可以降压也可以升压。基于此,本方案的电源电路采用MIC5219_3.3YM5 设计,借鉴了其所提供的电路设计方案。MIC5219 是一款低压差线性稳压芯片。具体电路设计如图8所示。

图8 LDO 供电电路

通讯电路在机器人系统中也是十分重要的,它承担着自身传感器各种数据的传输。其中,USB电路(如图9 所示)主要与PC 端上位机和树莓派通信,负责在调试阶段向上位机发送各种数据,实现数据可视化,方便软件调试和算法验证。串口电路(如图10 所示)一部分主要用于与物流机器人相互之间的通信;另一部分主要用于为物流机器人实时更新参数。负责机器人之间通讯的接口需要使用无线串口模块进行转接,因此它的位置需要向外,以免对其他电路造成短路风险。串口电路在设计时考虑从机器人主板上获取电源,因此,需要一个5V 的电源接口,同时在输入端放置一个二极管,防止系统芯片因电源反接而损坏。出于安全性考虑将整个电路进行接地,因此采用GND 结构,数据的接收和发送分别需要两个接口,最终串口电路需要四个接口。

图9 USB 接口电路

图10 串口电路

摄像头选取OpenMV4 plus 摄像头。该摄像头具有成品的电路设计,无需进行额外改动,并且支持Python 语言编程,极大地方便了项目开发,只需与单片机和树莓派进行串口通信即可。

在设计电路系统时还考虑到了一种辅助电路,即指示灯电路,如图11 所示。该电路不仅在试验阶段对系统调试能够起到一定的辅助作用,还可以极大地提高智能物流机器人的易用性和人机交互性。指示灯电路是通过使用单片机信号控制MOS 管的连接来控制LED,采用共阳极的三色RGBLED 和N 沟道MOS 管设计。RGBLED 灯可以显示红、绿、蓝、白、紫、黄六种颜色,这些颜色的出现以及变化情况可以有效地指导系统的运行,在工业场景中,也可以对工人起到预警的作用。

图11 RGBLED 指示灯电路

3 软件设计

物流机器人的机械结构和电路设计完成后,最重要的是机器人的嵌入式软件程序设计。该机器人的程序可分为两部分,一是机器人运动控制系统;二是机器人全景图像系统。设计算法程序的主要步骤包括:系统功能需求分析、软件架构设计、功能模块设计、模块功能集成和系统整体测试。

裸机开发的思想十分简单,只需在开发前规划好程序的整体系统框架和各功能模块之间的信息流动路线。智能物流机器人的软件流程主要是收集信息、处理信息和输出信息,而这些功能之间需要相互协调,才能保证控制的稳定。

运动控制采取了经典的PID 算法,该算法在工业界被广泛应用,效果得到了广泛验证。但运动控制系统不是本文的研究重点,不做过多阐述。

智能物流机器人的全景图像系统采用Python语言进行编写。生成全景图像的方法有很多,不同的算法,步骤会有一定差异,但大致上相同,主要有图像预处理、图像配准和融合图像三个步骤。

3.1 图像预处理

图像预处理包含数字图像处理的基本操作,如去噪、边缘提取、直方图处理等。可以通过OpenCV 快速实现图像的各种预处理操作。

3.2 图像配准

图像拼接中最重要的就是找到相邻图像中的重叠部分,然后生成图像的变换矩阵,这一步骤就是图像配准。智能物流机器人的前后左右各装有一个摄像头,共四个摄像头,各自拍摄同一场景中不同角度的图像传输给树莓派进行处理。配准最终就是要找出t 时刻传回树莓派的这四张待拼接图像的最佳变换矩阵。当前常用的一些空间变换模型有平移变换、刚性变换、仿射变换以及投影变换等[2],如图12 所示。

图12 常用空间变换模型

用矩阵形式描述如下:

其中,投影变换矩阵中各参数的作用如表1所示。

表1 投影变换矩阵M 中各参数作用

原图像经过变换矩阵M 就会有不同的呈现,通过变换矩阵中的参数,就可以得到构建全景图像所需要的新图像。图像中的平移关系比较容易检测和配准,但是旋转和缩放的检测是比较困难的。针对这一难题,许多算法提出了不同的解决方案。本文采取了基于特征的图像配准方法。

基于特征的图像拼接压缩了需要使用的图像信息,利用图像的明显特征来估计图像之间的变换,降低了运算量。

本文选取了基于SIFT 的配准算法。该算法由Lowe 于1999 年提出,2004 年完善总结。[3]该算法利用图像关键点的SIFT 特征向量进行匹配,其步骤如图13 所示。

图13 SIFT 步骤

高斯金字塔通过高斯函数进行构建。图像I(x,y)在不同尺度下的尺度空间可表示为图像与高斯核的卷积:

其中,G(x,y,σ)=1/(2πσ2)e-(x2+y2)/2σ2)是尺度可变高斯函数;(x,y)是图像像素位置;σ 为尺度空间因子。

在图像平面空间和高斯差分金字塔中同时检测局部极值,可检测到稳定的特征点。高斯差分函数定义为两个不同尺度的高斯核的差分:

基于差分高斯金字塔获得图像特征后,以欧氏距离作为特征的相似性判定准则,得到满足要求的匹配特征。SIFT 算法通过匹配特征就可以得到图像的变换矩阵参数,最后完成全景图像的生成。部分代码如下:

# 读取图像

imageA=cv2.imread('C:\Users\15114\Desktop\img

\13.jpg')

imageA=cv2.resize(imageA,(720,300),interpolation

=cv2.INTER_AREA)

cv_show("imageA",imageA)

imageB=cv2.imread('C:\Users\15114\Desktop\img

\14.jpg')

imageB=cv2.resize(imageB,(720,300),interpolation

=cv2.INTER_AREA)

cv_show("imageB",imageB)

t1,imageA1=cv2.threshold(imageA,100,255,cv2.

THRESH_TRUNC)

t2,imageB1=cv2.threshold(imageB,100,255,cv2.

THRESH_TRUNC)# 计算SIFT 特征点和特征向量

(kpsA,featuresA)= detectAndCompute(imageA1)

(kpsB,featuresB)= detectAndCompute(imageB1)

# 基于最近邻和随机取样一致性得到一个单应性

矩阵

(M,matches,status)=matchKeyPoints(kpsA,kpsB,

featuresA,featuresB)

# 绘制匹配结果

#drawMatches (imageA,imageB,kpsA,kpsB ,

matches,status)

# 拼接

stich(imageA,imageB,M)

3.3 图像融合

直接拼接后的图像由于光照、视角等因素的影响,在图像拼接后的重叠部分可能会出现重影、模糊、鬼影或者噪点,边界处也会有明显的拼接痕迹。图像融合可以明显改善拼接质量。

符合本设计需求的算法有加权平均法、基于感兴趣区域图像融合法、对比度调制法和基于颜色变换的融合算法。鉴于智能物流机器人并不需要实现高标准的全景图像,加权平均法完全可以达到要求。

加权平均法是非常简单的图像融合算法。将两幅图像分别给予不同的权重系数后再相加就是加权平均法的本质。可以表示为:

其中,加权系数α 需要满足0≤α≤1。

本文利用全景图像系统实现了智能物流机器人的全景感知,能够有效提升智能物流机器人的循迹与避障功能,满足了智能物流机器人对于环境信息的输入要求,弥补了单一摄像头只能获取同一场景单一角度环境信息的缺点。鉴于当前物流工厂需要实现多机器人协调工作,因此,基于全景视图的优势进行多机器人调度将是下一步的重要研究方向。

猜你喜欢
电路设计全景电路
电路的保护
戴上耳机,享受全景声 JVC EXOFIELD XP-EXT1
解读电路
Altium Designer在电路设计中的应用
巧用立创EDA软件和Altium Designer软件设计电路
负反馈放大电路设计
基于MATLAB模拟混沌电路
全景敞视主义与侦探小说中的“看”
从5.1到全景声就这么简单 FOCAL SIB EVO DOLBY ATMOS
全景搜索