齐新皓 苏秀云 马 国 李韶钦 曾登苑
(西南民族大学,成都,610000)
工业4.0自从在2013年4月汉诺威工业博览会上被正式推出,人工智能开始被越来越多的人关注。在人工智能领域,跟随机器人的开发已经成为一个稳步增长的研究趋势,并将成为机器人发展的下一个重大趋势。因此,有必要开发出一种具备自动跟随功能的机器人,以满足众多现实需求[1]。
跟随高尔夫车、跟随行李箱[2]等产品的出现,无疑给人们的生活带来了便利,满足人们的生活所需,而且这些具有自动跟随与目标识别功能的机器人也将成为人类最有力的助手。为了满足人们对人机互动的更高需求,本文设计了一款单目视觉自动跟随小车,通过在小车上安装视觉系统,并采集跟随目标的特征信息,再利用图像处理算法对跟随目标进行定位。该小车可服务于特定的目标对象,帮助人们完成任务。
本文设计的自动跟随小车采用STM32F103为主控制芯片,并使用OpenMV摄像头、直流电机、编码器、OLED显示屏等外设。
小车采用ST(意法半导体)公司生产的STM32F103芯片,该芯片采用Cortex-M3内核、ARM-V7架构。Cortex-M3拥有性能强劲、代码密度高、位带操作、可嵌套中断、低成本、低功耗等优势。
STM32F103芯片的优异性主要体现在以下几方面:
1)以8位机的价格得到32位机的性能;
2)拥有SPI、IIC、USB、CAN、ADC、DAC等众多外设机功能;
3)实时性能好,可使用的中断84个,具有16级可编程的中断优先级,并且每个引脚都可以作为中断输入;
4)较低的开发成本,支持SWD和JTAG两种调试接口,为仿真调试带来便利。
小车通过机器视觉定位技术完成对跟随目标的定位,首先,利用相关视觉处理技术确定小车与跟随目标的相对坐标位置(如图1所示),然后根据与期望坐标间的比较结果,由控制器控制电机转动,最终实现小车对目标的跟随。
图1 单目视觉定位原理图
从图1中可以看出,已知量[3-5]包括:相机高度H,图像坐标中心对应的实际坐标点与摄像头在y轴上的距离O3M,镜头中心点的图像坐标O1(ucenter,vcenter) ,测量像素点的图像坐标P1(u,0)、Q1(u,v),实际像素的长度xpix和宽度ypix,摄像头焦距f。
根据上述已知量,可计算出角 、角β、角γ:
由上述公式可得到Y轴垂直方向的坐标:Y=O3P;
由公式(5)-公式(7)可得到X轴垂直方向的坐标∶X=PQ
小车采用脉冲宽度调制(Pulse Width Modulation,PWM)技术进行调速,脉宽调制示意图如图2所示。PWM控制技术以采样控制理论中的一个重要结论为理论基础(即:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同),对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,并用这些脉冲来代替正弦波或其他所需要的波形,然后按一定的规则对各脉冲的宽度进行调制,这样既可以改变逆变电路输出电压的大小,也可以改变输出频率。
图2 脉宽调制示意图
基于STM32F103芯片,PWM工作原理如下:假设定时器工作在向上计数PWM模式,且当CNT 图3 PWM工作原理示意图 从图3中可以看出,当CNT值小于CCRx的时候,IO输出低电平(0);当CNT值大于等于CCRx的时候,IO输出高电平(1);当CNT达到 ARR 值的时候,重新归零,然后重新向上计数,依次循环。改变CCRx的值,就可以改变PWM输出的占空比;改变ARR的值,就可以改变PWM输出的频率,这就是PWM输出的原理。 需要说明的是:CNT英文全称为TIMx_CNT,中文名称为计数器寄存器;ARR英文全称为TIMx_ARR,中文名称为自动重载寄存器;CCR英文全称为TIMx_CCR,中文名称为捕获/比较寄存器。 小车车体结构通常有三轮式、四轮式两种,考虑到小车的跟随性能,本文设计的小车采用三轮式结构,控制系统采用差速转向控制方式。 所谓差速控制是指小车采用两个轮子作为驱动轮,另外一个轮子作为万向轮。在转向时,驱动电机对小车左右驱动轮采取不同转速的方式进行驱动,以达到差速转弯的效果,而非驱动轮则选用万向轮,可360°转动。 驱动方式分为前驱和后驱两种,前驱的转向性能较好,但驱动力不足;后驱虽然转向力不足,但可以为系统提供较好的动力,而且就稳定性而言,后驱的性能更加优越。所以,笔者综合考虑多方面的因素后,决定对小车采用后驱的方式。小车结构示意图如图4所示。 图4 小车结构示意图 小车的电源为两大部分提供电压,一部分是主控芯片及摄像头,另一部分是两个电机,如图5所示。为此,笔者设计了两组电源:一组采用稳压芯片AMS1117-3.3,经过滤波稳压后为主控芯片STM32F103及OpenMV摄像头提供3.3V稳定电压;另一组采用升压芯片MC34063,为两个电机提供12V的稳定电压。 小车使用OpenMV摄像头作为图像采集传感器,并使用OpenCV库对采集的图像进行处理。该摄像头采用ARM Cortex M7架构的STM32F765VI处理器,所有的I/O引脚均可输出3.3V,并且兼容5V。感光芯片使用OV7725感光元件,在80FPS下可以处理320×240的16位RGB565彩色图像。在该项目中,小车主要使用一个异步串口总线 (TX/RX)的I/O接口,用来与主控芯片进行通信。 图5 小车电源模块 在电机驱动模块中,小车采用双MOS电路[6],其工作原理如图6所示。该电路具有以下优点: 1)具有欠压保护功能,支持电压为7V~24V; 2)双路电机接口,每路额定输出电流7A; 3)类似L298控制逻辑,每路都支持三线控制使能、正反转及制动; 4)控制信号使用灌电流驱动方式,支持绝大多数单片机直接驱动。 图6 双MOS电机驱动电路原理 小车控制系统总体结构如图7所示。 小车要实现跟随功能,其主要设计程序是:首先通过OpenMV摄像头获取图像,并在图像中搜索指定色块目标,经OpenCV库处理后获取目标坐标与小车的实际距离,再通过通信模块传输至主控制器,然后与期望值进行比较,主控制器根据实际距离偏差值来控制电机的运行,以实现小车的自动跟随功能。 图7 小车控制系统总体结构 小车控制系统的主程序设计流程如图8所示。设计包括控制芯片、OpenMV摄像头、OLED显示屏的初始化,比如对I/O口、定时器、中断等进行初始化。若跟随目标不在最初视野范围内,则在搜索到目标后再进行图像处理。在对小车的控制过程中,笔者引入了飞控系统中的俯仰角、航向角,即用俯仰角来控制小车的前进后退,航向角来控制小车的左右转向。 图8 小车控制系统主程序设计流程 本文介绍的自动跟随小车,目前已可以对距离车体0.5m~2.5m内的固定目标实现定位,并能达到与目标始终保持1m的相对距离。当相对距离改变时,小车可在0.5s内快速响应距离的改变,并实现快速跟随功能。此外,该小车还可增大车体体积,改装成跟随行李箱、跟随购物车等具有实用价值的跟随机器人。2 小车结构及模块设计
2.1 车体机构设计
2.2 电源模块
2.3 图像采集模块
2.4 电机驱动模块
3 跟随程序设计
4 总结