基于STM32的智能物料搬运机器人的设计
2023-01-10曾一凡杨振南王亚勇
曾一凡,杨振南,王亚勇
(湖南科技学院 信息工程学院,湖南 永州 425199)
随着物流系统的日渐发达,货物的存储、搬运和分拣的自动化程度越来越高。如何提高物料搬运机器人的灵活度,识别准确度和执行速度一直是物料机器人研究和开发的热点。本文通过在智能小车上安装三连杆机械臂,并通过舵机控制连杆的运动,通过数学建模实现对机械臂的运动控制,在机械臂末端安装机械抓手实现物体的抓取,最终完成了物料搬运机器人的设计和制作。
1 系统设计目标及总体设计方案
1.1 系统工作流程
本项目设计的机器人将应用于物流仓库中,完成仓库内部货物智能搬运。首先,机器人到指定的位置通过扫描任务发布屏幕上显示的二维码,获取搬运的任务。该任务由上位机系统自动生成和发布,通过固定放置的二维码显示出来。二维码中明确指出了需要搬运的物料的存放位置和二维码编码,以及需要搬运的目标存放位置等信息。物料搬运机器人的工作流程是:到固定位置读取屏幕的二维码,获取工作任务;然后根据目标物料的存放位置以及预存的仓库路线地图,计算出合理的运动路径;接着根据路径,并识别出仓库地面上的引导线,运行到物料存放位置;通过摄像头识别物料的二维码,伸开机械臂,打开机械抓手,拿取物料并收回机械臂;再根据任务中的目标存放位置,计算出路线图,寻找路面引导线,运行到目标位置;识别货架的二维码并确认后,把运来的物料放置到正确的货架位置。最终完成物料搬运,并运行到任务发布屏幕领取下一个任务。
1.2 系统功能设计
为了完成以上工作,机器人应该具有以下功能:①能够自己扫描任务二维码和条形码获取任务信息,并且在LCD屏幕上面显示,进而做出相应的执行和判断任务指令是否正确;②要求机器人可以自己自动寻迹,并且到达任务码规定的位置区域;③机器人可以根据获取到的任务信息准确判断物料的颜色;④能够根据获取到的指令进行分析,如果物块的颜色与指令的颜色相匹配,说明识别正确,可以自动夹取所匹配的物块,搬至任务所指定的区域。
1.3 系统设计方框图
智能物流搬运机器人的系统设计方框图如图1。该控制主控制器使用STM32F103ZET6单片机,负责所有外围设备的数据通信,小车运动电机控制,机械臂舵机控制以及图像识别模块通信、路径规划计算等软件执行;二维码识别模块、OpenMV摄像头、7路灰度传感器用于外部环境监测,以及对象识别,寻迹自动驾驶的数据输入;L298N电机驱动模块、舵机驱动用于系统的动力输出,动作完成的输出;OLED屏幕用于显示机器人的工作状态实现人机交互;DC-DC降压模块以及电池用于为系统提供能源。
图1 系统方框图Fig.1 System block diagram
2 主要硬件电路设计
2.1 主控制电路的设计
本项目采用了意法半导体公司的STM32F103ZET6作为主控芯片。STM32F103系列是基于CORTEX-M3内核架构的ARM处理器,其最高工作频率能够达到72MHz[1]。具有144个引脚,且大部分引脚都可以作为通用IO,IO数量可以满足项目开发和调试的需求。该处理器还拥有8个定时器,定时的工作模式丰富,其硬件捕捉功能可以很容易实现硬件级别的PWM,项目中可以用来实现PWM调速。此外该芯片丰富的串口,SPI、IIC等接口可以满足本系统开发中与外部数据采集和驱动电路的连接需求。
根据意法半导体的参考电路,通过外接的8MHz无源晶振与内部振荡器构成时钟电路,通过系统内部PLL进行倍频产生72MHz内部时钟,为系统内部提供稳定的时钟。芯片内部通过配置寄存器,为IO及其他外设模块提供时钟,对于不使用的外设则关闭其时钟,以达到降低功耗的目标。
2.2 车轮的选择
一般的小车只能前进后退,为了能够提高机器人的灵活性,实现在工作环境中灵活、快速、准确运动,本文采用麦克纳姆轮[2],其外形如图3。麦克纳姆轮是一种可全方位移动的全向轮,简称麦轮。主要由轮毂和围绕轮毂的辊子轮组成,麦辊子轴线和轮毂轴线夹角成45°。在轮毂的轮缘上斜向分布着许多小轮子,即辊子。如图2,在小车上安装4个麦克纳姆轮,并通过电路控制轮子的运动就可以实现小车的多方向自由运动。具体运动过程如下:当4个轮子同时向前滚动时,小车向前运动;当4个轮子同时向后滚动时,小车向后运动;当左边2个轮子向后滚动,右边2个轮子向前滚动时,小车原地左转;当左边2个轮子向前滚动,右边两个轮子向后运动时,小车原地右转;当左1/右1两个轮子向后滚动,左2/右2两个轮子向前滚动时,小车向右横移;当左1/右1两个轮子向前滚动,左2/右2两个轮子向后滚动时,小车向左横移[3]。小车横向移动时,大轮上的小轮发挥作用。这是麦克纳姆轮实现横移的关键。
图2 麦克纳姆轮及小车安装示意图Fig.2 Installation diagram of McNamm wheel and trolley
图3 软件工作流程图Fig.3 Software work flow chart
表1 电机参数列表Table 1 List of motor parameters
2.3 电机的选择
机器人在运行时,需要停车并完成搬运动作,其动作的准确度取决于停车位置的准确度。为了准确停车,电动机必须严格控制运转速度,而直流电动机唯一的缺点是转速无法准确控制。为了实现准确停车,要求电机自身带有编码器用于电机测速以实现电机闭环控制。本项目选用的带有编码器的直流减速电机,不但拥有普通直流减速电机控制简便、速度快,扭矩大等优点,又能像步进电机一样,速度平稳,控制精确。
2.4 电池的选择
机器人运行中电池需为电动机和舵机供电。本系统中单个电机工作时额定电压12V,额定电流380mA,同时有4个电机工作。单个舵机工作时额定电压7.4V,额定电流100mA,同时有6个舵机工作,其他电路工作电流和小于100mA。所以,机器人需要输入电流I总:
本项目所选择的航模电池支持5C持续放电,其最大持续放电电流Iout = 3.5A × 5 = 17.5A,远超机器人运行所需电流,满足机器人使用要求。
3 软件设计
3.1 程序设计总流程图
系统软件采用模块化程序设计,依据搬运物料的流程编写控制子模块,详细流程如图3。物料搬运机器人从程序初始化开始,先通过二维码扫描或者条形码扫描读取任务到达任务的指定地点,用OpenMV摄像头确定物料的颜色和位置[4],调整机械臂夹取物料,计算小车行走的距离,夹取物料到达指定位置,判断物料是否已经全部夹取完毕。如果完毕就结束任务,回到起始点。但是没有完成,小车将会再次回到第一次放置物料的指定位置,再次夹取物料,再一次执行上面程序,直到物料夹完。
3.2 灰度传感器的原理及其配置程序设计
灰度传感器是一种光敏电阻传感器。应用中,使用一个发光二极管发出白光,由于被检测面的颜色深浅不一,最终反射出来的光强弱也不同。使用光敏电阻接收被检测面反射的光则电阻值跟着变化。本项目使用的光敏电阻灰度检测模块,通过简单的配置就可以读回灰度检测结果。下面的代码完成灰度传感器的初始化及其获取灰度传感器数据。
void Gray_init(void ){
RCC->APB2ENR|=1<<6; //PORTE 时钟使能
GPIOE->CRL&=0XF0000000;
GPIOE->CRL|=0X08888888; //PE0-7输入
RCC->APB2ENR|=1<<7; //PORTF 时钟使能
GPIOF->CRL&=0X00000000;
GPIOF->CRL|=0X88888888; //PF0-7输入
GPIOF->CRH&=0X000F0000;
GPIOF->CRH|=0X88808888; //PF8-15输入
RCC->APB2ENR|=1<<8; //PORTG 时钟使能
GPIOG->CRL&=0X00000000;
GPIOG->CRL|=0X88888888; //PG0-7输入
GPIOG->CRH&=0X00000000;
GPIOG->CRH|=0X88888888; //PG8-15输入
}
void gray_data(void){
FRONT_DATA= (GPIOF->IDR & 0X0FFF)>>5;
BACK_DATA= (GPIOG->IDR & 0X0FFF)>>5;
LEFT_DATA= GPIOE->IDR & 0X007F;
RIGHT_DATA= (GPIOF->IDR >>13) | ((GPIOG->IDR>>12)<<3);
}
3.3 OpenMV图像识别的配置程序设计
OpenMV图像识别是用于将物体颜色同前面已经示教过的参考颜色进行比较来检测颜色的装置。当两个颜色在一定的误差范围内相吻合时,输出检测结果。首先,通过程序定义物体的颜色,代码如下。当机器人识别成功时,返回物料的中心坐标通过串口发送识别成功的信号给STM32,STM32通过计算控制机械臂旋转的角度夹取物料。
ring_thresholds = [(7, 59, 22, 110, -128, 127), # 红阈值
(5, 19, -95, -12, 3, 52), # 绿阈值
(6, 40, -21, 0, -38, -3)] # 蓝阈值
graythreshold=[(50,100)] #黑白阈值
thresholds=[(52, 33, 10, 52, -1, 29), # 红阈值
(97, 38, -43, -11, 9, 30), # 绿阈值
(59, 33, -11, 7, -36, -17)] # 蓝阈值
4 样品制作及测试
本项目以一块亚克力板作为物料机器人的车架,使用螺丝把电机固定在车架下,再把麦克纳姆车轮装到电机转轴上,然后在车架上安装好机械臂和控制主板。安装好的物料搬运机器人如图4。通过在实验室地面上绘制固定的寻迹道路,并设置了任务发布二维码显示屏幕和多个物料存放点,然后进行测试。经过测试,该物料搬运机器人能够正确地识别3种不同颜色和不同形状的物料,并正确地抓取,然后寻迹搬运到指定的物料存放目标位置。结果证明,本项目设计的样品达到预期目标。
图4 智能物料搬运机器人样品Fig.4 Sample of intelligent material handling robot
5 结束语
物料运送机器人在工业农业生产以及物流领域应用广泛,不断提高其移动灵活性、抓取物品的准确性需要不断地研究新方法,使用新技术。本项目制作的样品使用麦克纳姆车轮实现横向移动,通过摄像头识别抓取对象,使用机械爪抓取物品,实现了一种小体积物料运送机器人,对于新技术的研究和尝试具有一定的参考价值。然而,小车驱动能力弱,抓取物品体积和重量都有限,是实验室的小模型,离实际应用还有很大的距离,在机械臂的控制精度方面也有待提高。