基于麦克纳姆轮的视觉识别与搬运系统设计
2024-04-20陈炜琦周骞煜吴岩
陈炜琦,周骞煜,吴岩
(杭州电子科技大学 电子信息学院,浙江杭州,310018)
0 引言
工业机器人自诞生后就迅速进入产业化发展,并且在工业生产中得到广泛应用[1]。麦克纳姆轮移动平台因其独特的全向运动特性能够在狭小的空间灵活运动而备受关注[2]。机器视觉技术融合了计算机科学、应用数学等多个交叉学科的知识,已经成为人工智能应用领域的研究热点[3]。本文旨在研究结合视觉识别、目标检测和麦克纳姆轮以更好地完成复杂的搬运任务。
1 系统总体方案设计
本系统总体方案设计如图1 所示,主要分为六大模块:
图1 系统总体方案框图
主控模块,采集传感器模块、视觉处理模块、辅助调试模块的信息,做出控制决策,驱动电机控制模块。
电源模块,负责为主控模块和相关外设提供稳定的电源电压。
传感器模块,获取系统与外界环境的各类信息供主控模块分析计算。
电机控制模块,直流电机实现系统运动,舵机完成机械臂运行,电磁铁实现抓取和放置物品。
视觉处理模块,获取物品位置信息和分类结果。
辅助调试模块,监视系统状态,观察变量。
2 系统硬件电路设计
系统采用NXP RT1064 为核心MCU,整套硬件系统包括主控模块、电源模块、传感器模块、电机控制模块、视觉处理模块、辅助调试模块。
2.1 主控模块设计
考虑合理分配RT1064 的硬件资源以确保其余模块正常使用,原理图如图2 所示。
图2 主控模块原理图
2.2 电源模块设计
电源选择8.4V 电池,通过buck[4]电路完成降压,其中5V 电源采用TPS54328DDAR,3.3V 电源选择TPS7333。原理图如图3 所示。
图3 电源模块原理图
2.3 传感器接口设计
传感器模块包括陀螺仪、蓝牙模块和编码器,原理图如图4 所示。
图4 传感器模块原理图
2.4 电机控制模块设计
电机控制模块包括直流电机、舵机以及电磁铁,直流电机模块采用H 桥[5]的设计。舵机和电磁铁工作电压均为8.4V。原理图如图5 所示。
图5 电机控制模块原理图
2.5 视觉处理模块设计
视觉处理模块包括三个图像识别视觉模块,均使用UART 通讯,视觉处理模块原理图如图6 所示。
图6 视觉处理模块原理图
2.6 辅助调试模块设计
辅助调试模块包括OLED 屏、按键、无线串口,辅助调试模块原理图如图7 所示。
图7 辅助调试模块原理图
3 系统结构设计
系统结构设计部分包括系统底盘和机械臂的设计。经过Solidworks 软件建模,使用激光雕刻技术和3D 打印技术加工实物并完成组装。
3.1 系统底盘设计
系统底盘作为整个系统的支撑结构,所有模块均直接或间接安装在底盘上,设计时主要考虑机械臂和麦克纳姆轮的安装。
机械臂与底盘之间通过螺栓螺母连接,为解决重心偏移问题,机械臂安装在底盘前端,电池等电子元件均安装在底盘后端。
底盘采用四轮独立驱动的麦克纳姆轮全向底盘结构,每个电机驱动一个麦克纳姆轮[6],安装方式为螺栓螺母,驱动电机与编码器通过齿轮配合,底盘设计如图8 所示,安装效果如图9 所示。
图8 底盘设计建模图
图9 麦克纳姆轮安装效果
3.2 机械臂设计
机械臂是系统的执行结构,负责将物品搬离或放回地面。机械臂采用2 自由度结构,驱动电机为舵机。为简化机械臂设计,在物品表面贴有圆铁片,机械臂顶部安装电磁铁实现物品的搬运。
4 系统软件设计
系统软件设计部分包括系统运动、目标检测、物品分类、物品搬运、系统定位五大模块。发出出发命令后,系统开始遍历。若未发现物品,系统将遍历场地;若发现物品,系统运动到物品附近,识别物品类别后将物品搬运到指定区域,然后再运动到原先位置继续遍历。多个物品则根据就近原则搬运。任务进行过程中,根据传感器信息计算当前系统坐标。系统程序流程框图如图10 所示。
图10 系统程序流程框图
4.1 系统运动
以场地为固定坐标系,规定向右为x 轴正方向,向前为y 轴正方向,垂直地面向上为z 轴正方向。
4.1.1 麦克纳姆轮运动学模型解算
式中(v xv yvz)T为系统的实际速度,R 为轮子半径,k 为常数,(v0v1v2v3)T为轮子转速。
为更好地求解四个轮子的转速,引入式(2),由线性变换可解得式(3)。
两式中所有符号均与式(1)相同。
式(1)和式(3)即麦克纳姆轮正逆向运动学模型解算[7]。
4.1.2 PID 控制算法
但是,在实际系统中,需要结合编码器构建PID 速度环控制系统[8],PID 算法框图如图11 所示。
图11 PID 算法框图
数学公式为:
式中Kp为比例时间系数,Ki为积分时间系数,Kd为微分时间系数,t为从0 时刻开始到输出当前控制量时经过的时间间隔。
The velocity amplification coefficient of the open-loop system is
本文使用三个不同参数且相互独立的PID 控制环计算系统当前速度的理论值,使用一个PID 控制环确保系统当前速度为理论速度。完整的PID 串级环程序流程框图如图12 所示。
图12 PID 串级环程序流程框图
第一个PID 环控制系统沿着x 轴方向平移。给定系统的目标坐标(x0y00),主控模块实时计算当前坐标(x y Yaw),系统当前位置与目标位置在x轴方向上的距离差值e x=x-x0,将其代入式(4)得此刻目标速度分量vx。
第二个和第三个PID 环分别控制系统沿着y 轴运动和绕着z 轴旋转,计算方式与第一个PID 环仅有参数上的差别,可得目标速度分量vy和vz。
将三个速度代入式(3)即得到四个轮子的目标速度v0、1v、v2、v3。
由四个编码器可得四个轮子的实际速度,把四个速度差值作为第四个PID 环的输入就可得到输出,这个输出可作为驱动每个轮子的PWM 占空比。
4.2 目标检测
目标检测采用轻量化的YOLO 模型,将实拍且不影响训练的图片组成数据集1,将数据集1 通过OPENCV 进行扩充数据集得到数据集2,对数据集2 的每一张图片人工添加标签确保训练数据正确,训练结束后使用量化、采样的方式得到轻量化模型。
系统在遍历时,图像识别视觉模块使用OPENMV 库函数读取该模型,将物品在图像识别视觉模块拍摄的图片中的像素坐标转化为场地内真实的距离坐标,就得到了物品的位置信息。
4.3 物品分类
为提高分类准确率和系统鲁棒性,在物品表面贴有卡片用于指示物品类别。物品分类采用轻量化的CNN 神经网络模型,将实拍物品所属类别的卡片得到数据集1,将数据集1 中的所有图片进行数据增强并缩放至64*64 像素点,得到数据集2,并放入TensorFlow 框架中,共包括6 层卷积层,6 层池化层,6 层随机失活层,卷平层,全连接层,激活函数[9]。训练结束时测试集正确率84.1%,经过量化、采样后对卡片实际验证正确率,达到80.8%。
将所有错误的卡片再次进行数据增强得到数据集3,调整网络结构和学习率、batch 等参数,将数据集3 放入新的网络中训练,训练结束后再次实际验证正确率并不断重复上述过程,最终实际验证正确率为99.2%,每一类别正确率如图13 所示。
图13 测试集类别正确率图
图14 舵机状态1-物品搬运
4.4 物品搬运
卡片搬运依靠机械结构完成,机械臂驱动电机为舵机,只需改变信号的占空比即可控制舵机。
机械臂自动处于复位状态,当准备搬运物品时进入状态1,当物品离开地面后系统运动到指定区域,运动结束后电磁铁断电,机械臂复位。
在实际控制过程中,由于舵机精度不够导致在机械臂运动时物品并不能被很好地吸合,因此采用积分分离PID 算法[10],用运动轨迹的控制量进行快速准确处理,计算PWM占空比完成对舵机的控制。
4.5 系统定位
为更好地完成物品搬运任务,准确而实时的位置信息能够显著提高效率。本文通过处理陀螺仪和编码器信息,采用数据融合方式完成定位。
4.5.1 陀螺仪数据处理
陀螺仪可直接得到系统的三轴加速度和三轴角速度,但是陀螺仪原始信号存在很大噪声,即使通过滤波也无法完成去噪甚至会改变有用信号,因此本文采用四元数进行姿态解算得到欧拉角[11]。
四元数解算,先对重力加速度归一化,将四元数换成方向余弦中的三个元素,对六轴数据向量叉积得姿态误差,对误差进行积分再滤波修正陀螺仪误差,通过一阶龙格库塔法更新四元数并归一化就可以得到最终的偏航角Yaw。
4.5.2 编码器数据处理
利用一阶互补滤波算法[12]处理编码器的原始数据,即得四个轮子的旋转速度,将其代入式(1)可得速度,但是,由于偏航角的变化,需引入坐标变换进行速度修正得到系统以场地为坐标系的速度,对修正后的速度经过积分得到系统的坐标。由三角函数的计算可得速度修正公式为式(5)。
式中()T为修正后的速度二维分量,a 为偏航角的余弦值,b 为偏航角的正弦值,(v xvy)T为修正前的速度二维分量。
5 结语
本文设计了一种基于麦克纳姆轮的视觉识别与搬运系统,经过综合设计硬件、结构、软件三个部分,参照buck电路、H 桥等经典电路,使用PID 控制算法、目标检测算法、CNN 神经网络,结合Solidworks、OPENMV IDE 等软件进行设计。经过测试,本系统完成对所有物品的搬运任务,可用于物流分拣领域,具有较高的运行效率以及较高的分类正确率。