李晓旭,周焕银
(东华理工大学 机械与电子工程学院,江西 南昌330013)
基于STM32智能小车视觉控制导航的设计
李晓旭,周焕银
(东华理工大学 机械与电子工程学院,江西 南昌330013)
为了提高车载视频导航控制子系统的准确度,本文介绍一种基于STM32的视觉导航系统。该系统使用USB摄像头采集周围环境信息,视频通过编码后由无线路由传送到上位机,在上位机的MATLAB中利用现有的灰度和二值化的方法对图像进行处理,以及在Keil软件平台上进行编程,小车采用PID控制算法控制电机的速度,以此用来改变小车移动的方向。通过实验验证,该系统确实能够在一定的区域内实现导航,具有一定的可扩展性。
STM32;视觉导航;图像处理;PID
以往大多数自主路径规划机器人都是从传感器获得相关数据进行障碍物感知,再进行路径规划。随着计算机技术和电子技术的发展,视觉导航已经成为导航技术的主要方式之一。在基于视觉的移动机器人导航系统中,机器视觉是移动机器人视觉导航系统中的关键技术,是控制决策子系统[1]的重要信息来源。因此,越来越多的研究者投身于视觉导航技术的研究,尤其是最近30年,视觉导航在飞机、无人飞行器、各类巡航导弹、深空探测器以及室内外机器人等方面得到了广泛的应用。文献[2]在感兴趣区域内,采用模糊聚类、线性拟合以及帧间差分法确定障碍物位置;文献[3]根据视觉信息的基本处理过程,对视觉图像预处理技术、视觉图像特征提取技术以及视觉定位技术等方面进行了详细的介绍;文献[4]设计了一种视觉辅助惯导组合导航方法,辅助无人机自主着陆;文献[5]中使用小波视频导航算法,经研究发现,小波算法的实时性都待提高;文献[6]中介绍了智能车辆视觉系统中的一些图像处理技术,目前主要有二值、边缘和锐化等技术;文献[7-9]中则具体介绍了现在基于视觉的智能车辆控制系统。文中是利用WIFI图像采集模块,使用图像处理技术(灰度化、二值化[10-11])提取图像信息,然后控制子系统规划智能小车下一步路径,使其能够在规定的区域内得到最佳行进路线。
本系统选用STM32F103zet6作为主控处理器来完成整个小车系统任务。STM32系列[12]专为要求高性能、低成本、低功耗的嵌入式应用系统专设计,其内部嵌有ARM Cortex-0内核。stm32f103系列单片机使用的是低电平复位,上电复位时必须保证有足够的时间才能完成系统初始化。工作原理是利用电容充放电时电压不可突变的性质。上电时电压电压为0,随电源通过R21和C32进行充电后,电容两端的电压为高电平,完成系统复位。该系统使用外部晶振,芯片的时钟源有5种:HSI、HSE、LSI、LSE、PLL。系统使用高效线性稳压电源AMS1117,用于5 V到3.3 V电平转换,为本微机最小系统提高工作电源。
如图1所示,本系统主要包括两个子系统:图像采集模块和驱动模。其主要工作流程为:由PC端向WIFI模块发送一个视频请求,路由端的视频处理程序会把获取的USB摄像头视频传回PC端,然后PC端进行视频解码并显示;PC端发送指令到WIFI模块,然后通过路由器的转换,把指令转给单片机,从而机器人执行指令。
图1 系统框图
2.1 图像采集模块
图像采集模块主要有WIFI模块和USB摄像头组成。由于本系统的WIFI模块本身就运行着一个可以把通过USB摄像头采集到的视频进行编码的程序,叫做mjpg-streamer。视频进行编码后,将通过WIFI模块传送个PC机,这样就可以看到来自机器人的视频。同时WIFI模块预留有TTL串口,把该串口引出来,然后通过在无线路由里安装的串口通讯软件,ser2net,把来自WIFI信道的指令转到串口输出,一般TTL串口是用来调试或刷机用的,而该串口是用来与单片机芯片MCU通信,然后,单片机执行相应的指令动作。WIFI模块与单片机系统的连接如图2所示。PA9为单片机的TXD,其接WIFI模块的RX;PA10为单片机的RXD,其接WIFI模块的TX。
图2 WIFI模块与单片机系统的连接
2.2 驱动模块
在本系统中采用的是L298N双驱动,L298N内置4路驱动逻辑电路,即含有2路H桥高电压高电流双全桥式驱动电路,接收标准的TTL电平,实现低压控高压。速度调节原理采用PWM(脉冲宽度调制)方式。在本电路中ENA和ENB为PWM作为调节信号输入引脚,与单片机的PA0、PA1相连,IN1~IN4,IN5~IN8作为电机运动状态控制引脚(左转、右转、停)与单片机的PF0~PF3、PF12~PF15相连。LED灯作状态指示灯,并联在输出端的二极管目的是防止输出电平异常,为感性负载提供续流通道,防止芯片烧坏。
图3 L298N与单片机的连接
表1 L298N逻辑功能表
本系统中,软件主要包括两个部分:上位机图像处理和下位机控制系统。该系统的主程序流程图如图4所示。PC上位机发送请求void request_process(char*rx_buf)后,摄像头通过WIFI无线路由传送给上位机,在MATLAB软件中利用灰度化、二值化的算法对视频图像进行处理,根据处理信息,小车的决策子系统控制小车移动。
图4 系统主程序流程图
3.1 图像处理
本设计是在MATLAB[13]中对图像进行灰度化与二值化[10-11]处理的,MATLAB中与图像处理相关的基本函数有:读imread、写imwrite、显示imshow、信息查看imfinfo、数据类转换B=data_class_name(A)。
图像灰度化是通过对彩色图像的几个分量进行加权平均,最终得到灰度图像。MATLAB图像处理工具箱提供了灰度调整函数imadjust(),可以将图像的灰度值调整到一个指定的范围。如果原图象f(x,y)的灰度范围是[m,M],我们希望调整后的图象g(x,y)的灰度范围是[n,N],Imadjust函数的语法格式为:J=imadjust(I,[low_in high_in],[low_out high_out]);J是返回图象 I经过直方图调整后的图象,[low_in high_in]为原图象中要变换的灰度范围,[low_out high_out]指定了变换后的灰度范围。图像二值化是选取一个合适的闽值将256级的灰度图转化为只有两个灰度级的二值图像,从而明确区分目标和背景,简化图像。二值化的关键在于阂值的选取,闭值过小目标信息会有所缺失,闭值过大则背景信息混入目标中。求出图象的最大灰度值和最小灰度值,分别记为Rmax和Rmin,令阈值T=(Rmax+Rmin)/2,根据阈值T将图象的平均灰度值分成两组R1和R2,分别求出两组的平均灰度值μ1和μ2,求出新阈值T=(μ1+μ2)/ 2。对图像进行分析时,并不是对灰度图像分析,而是选取合适的阂值,将缺陷结果图像进行二值化。这样降低了处理的数据量,保证实时性要求。
3.2 控制系统
该智能车的控制系统包括控制小车电机速度的PID算法[14-15]和小车移动部分,视频导航智能车的控制程序是由Keil For ARM 编写完成,设定extern PID_type PID1和extern PID_type PID2分别为左右轮的PID,设定u32 read_car_speed(char*pwm)为获取的小车速度PWM值,为PID运算提供反馈值。如图5所示PID程序流程图。
图5 PID程序流程图
在小车执行程序中设置void car_process(char*rx_buf)为小车处理函数,假如 strncmp(" car_go",rx_buf,6)不等于0,小车前进;strncmp(" car_back",rx_buf,8)不等于0,小车后退;strncmp(" car_left",rx_buf,8)不等于0,小车左转;strncmp(" car_right",rx_buf,9)不等于0,小车右转;strncmp(" car_stop",rx_buf,8)不等于0,小车停止;strncmp(" pwm",rx_buf,3)不等于0,设置小车的速度值。
在进行系统程序调试和运行前,首先要进行系统测试,测试过程中,插座中先不插入各个模块的线,等测试结束后,在将各个模块的线相连。
虽然与市场上常见的采用非视觉传感器进行控制的智能车辆相比,本设计能够通过视频采集与处理技术使智能车完成一定的导航功能,在研究方面取得了一些进展,不仅降低了科研成本,而且能够全方位、多角度采集周围环境信息,使智能车呈现出较高的智能性,但是在实际应用中,还有很多需要进一步改进、完善的地方。
[1]孙涵,任明武,唐振民,等.基于机器视觉的智能车辆导航综述[J].公路交通科技,2005,22(5):132-135.
[2]毕书浩,李守成,完颜香丽.基于单目视觉的无人车环境感知技术研究 [J].机械工程与自动化,2014,183(2):57-58.
[3]管叙军,王新龙.视觉导航技术发展综述[J].航空兵器,2014,18(5):3-7.
[4]财鸣,孙秀霞,徐嵩,等.视觉技术辅助的无人机自主着陆组合导航研究 [J].应用光学,2015,36(3):343-350.
[5]张静.基于小波及亚像素分析的道路检测技术研究[D].武汉:武汉理工大学,2008.
[6]蒋杰.智能车辆视觉系统及图像处理技术的研究[D].长春:吉林大学,2003.
[7]刘巍.基于STM32的小型排障智能车设计与实现[D].保定:河北大学,2013.
[8]冯准.嵌入式视觉导航智能小车系统[D].长沙:中南大学,2008.
[9]王珊珊.轮式移动机器人控制系统设计[D].南京:南京理工大学,2013.
[10]陈丹,张蜂,贺贵明.一种改进的文本图像二值化算法[J].计算机工程,2003,29(13):85-86.
[11]张琪.结合边缘检测的图像二值化算法[D].长春:吉林大学,2011.
[12]STM32f103中文数据手册[M].
[13]张铮,王艳平,薛桂香.数字图像处理与机器视觉——Visual C++与Matlab实现[M].北京:人民邮电出版社,2014.
[14]郭智源,韩建,张西鹏,等.基于STM32的PID和PWM温度控制系统研究 [J].科学技术与工程,2011,11(16):3805-3807.
[15]倪长旺.可编程控制器PID算法的工程应用[J].自动化技术与应用,2015,34(12):68-71.
STM32-based visual control of the smart car navigation system
LI Xiao-xu,ZHOU Huan-yin
(College of Information and Electronic Engineering,East China Univ.of TECH.,Nanchang 330013,China)
In order to improve the accuracy of the navigation system,this paper introduces the visual navigation system based on STM32.The system uses a USB camera to capture the information of surrounding environment,the video encoded before transmitted to the host computer by the wireless router,using exist image processing algorithms for image processing in MATLAB as well as programming in Keil software platform PC's,car used PID control algorithm to control the motor speed in order to change the direction of movement.Experiments show that the system can indeed achieve navigate in a certain area,having certain expansibility.
STM32;visual navigation;image processing;PID
TN0
A
1674-6236(2017)09-0105-03
2016-04-07稿件编号:201604039
东华理工大学实验技术研究开发项目(DHSY-201604)
李晓旭(1990—),女,江苏徐州人,硕士研究生。研究方向:多智能体协同控制。