张 媛 万 盈 荣傲华 邓志民 刘博文 胡安正
(湖北文理学院物理与电子工程学院 湖北 襄阳 441053)
如图1所示,设计了一种遥控追踪的多功能救援车.该救援车系统主要包括主体平台和以STM32 单片机为中央处理器的无线远程遥控两部分,其间通过NRF24L01无线通信模块进行远程双向通信,主体平台采用K60作为主控处理器,基于OpenMV摄像头和三维云台,利用PID自动调节及机器视觉识别等技术,用户可通过OLED屏幕上反馈的信息,由远程遥控发送指令来实现避障、自动追踪、瞄准定位等功能.
图1 系统总体设计图
(1)微处理器选择:远程遥控器部分选用STM32F103C8T6单片机,其具有单周期的乘法指令和硬件除法以及优先级可编程的中断系统,工作时频率最高可达72 MHz.主体平台部分采用K60作为主控处理器,主频可达到180 MHz,具有丰富的模拟、通信、定时和控制外设.
(2)无线通讯模块的选择:遥控器部分通讯模块选用NRF24L01无线通讯模块,该模块是一款新型射频收发器件,工作于2.4 GHz~2.5 GHz ISM频段.内置频率合成器、功率放大器等功能模块,融合了增强型ShockBurst技术,其输出功率和通信频道可通过程序进行配置.
(3)机器视觉模块的选择:系统选用OpenMV摄像头, 该摄像头是一款低价、可扩展且支持Python的机器视觉模块,其以STM32H743VIT6单片机为核心,集成了OV7725摄像头芯片,整个模块在二者的联合下已高效地实现了核心机器视觉算法.
由于救援车在工作时需要多个模块进行信息交互,其间除了最简单的串口通信外还要进行基于NRF24L01的无线信息传输[1].故而整个系统的3个处理器除了需要通过程序控制其完成各自任务外,还需完成相互之间的信息传递.尤其是针对无线信息传输的部分,则更需要通过算法对丢包、信息准确度等问题进行优化.对此,本文选择放弃一定的通讯效率来换取信息的完整度,从而保证系统的稳定与可靠.以下将系统分为3部分进行分析设计.
(1)遥控器信息采集的原理及程序设计
用户在使用遥控器时,可以通过OLED屏幕上显示的菜单以及车模运行中的各项信息,通过按键对菜单进行操作,即通过电位器(摇杆)来操控车模的方向,控制其完成各项任务.在遥控器信息采集过程中,相对重要的是将采集到的摇杆电压值转化为控制电机与舵机执行对应动作的指令.由于摇杆带有回弹装置,故将遥控器开机时采到的第一批电压值经滤波处理后设为中点电压.即此状态时,车模电机转速为零,车模前轮保持向前,将滑动端采得的最大值与最小值之差划分为4 096个刻度,根据每一时刻单片机所采到的电压值转化为对应的百分比数值,并将这一信息编辑为报文发送至车模主控,对方则将接收到的信息转化为脉冲宽度调制(Pulse width modulation,PWM)波形对应的占空比传递至执行器,从而达到用摇杆控制车模运行速度与运行方向的目的.
(2)摄像头部分光信息采集原理探究及程序设计
该救援车通过三维云台和机械臂完成高危任务时,以OpenMV作为任务模块的“眼睛”即通过OpenMV捕捉到符合预设要求的目标物.在OpenMV捕捉要求的目标物时,将采集到的光信号转换成电信号,单片机通过Lab色彩空间来判断所采集的图像(Lab色彩空间是由国际照明委员会制定的一种色彩模式,其中L表示亮度;a代表从绿色到红色的分量;b代表从蓝色到黄色的分量).如此,可将图像中符合所设阈值的连续像素点认为是一个色块,对此时图像中的所有色块的外接矩形面积以及色块所含像素点的数量是否符合预设要求进行逐一判断,剔除其中不满足预设要求的色块.若图像经过上一步处理后仍存在多个满足要求的色块,则先根据色块区域的像素数量进行排序,选择其中最大的X个目标,将这些目标的坐标按照(r,θ,φ)自小到大的顺序进行排序,将排序后的信息经由车模主控发送至遥控器的控制单元,随后显示于遥控器板载OLED屏上,以供使用者选择[2].目标物在球坐标系示意图,如图2所示.
图2 目标物在球坐标系示意图
(3)车模主控的程序设计
车模主控部分主要起到中继作用,其接收遥控器的各类指令发送至各执行器,以达到控制全车的目的.针对各执行器,处理器主要操控的部分有转向舵机、电机以及云台;针对转向舵机,需预先测出其打角至机械左右极限和机械零点对应的PWM波占空比,并将其与方向控制摇杆的电压信号进行匹配,实现方向控制的功能.电机的控制与转向舵机的控制类似但不相同,也需要预设一个行驶速度上限、倒车速度上限以及静止速度设定值,并将这一设定值与速度控制摇杆的电压信号进行匹配.关于上述PWM波占空比的闭环控制算法,系统采取的是使用广泛、技术成熟的PID控制算法[3],算法流程图如图3所示.
图3 算法流程图
算法的系统函数如下:
PWMout=KP(SV- PV)+KI*sum+K* SV
sum=∑(SV- PV)
其中,SV为速度设定值,PV为编码器所采集到的速度当前值,KP和KI以及K为3个需要设定的系数.
云台的主要任务为辅助OpenMV进行目标物的寻找与捕捉,以及确定目标后由OpenMV辅助其完成瞄准任务.由于在寻找目标物的过程中已经对目标物的大致方位有了一定的了解,所以执行该任务的第一阶段会将目标物收纳于OpenMV的视野当中,运用增量式PID算法的思想“多退少补”,将目标物中心移动至OpenMV的视野中心,即完成了瞄准工作.
该救援车通过OpenMV与云台二者的结合,经NRF24L01模块实现信息交互,可实现避障、自动追踪、瞄准定位、辅助救援等功能.经过测试该救援车可按照操作者的指令完成预设的任务,且各项功能均运转良好.实物效果图如图4所示.
图4 救援车实物效果图