四轮小车自动避障系统设计
2021-04-27杜俊杰胡思琪伍冯洁郑振勤邓柏锋
杜俊杰,胡思琪,伍冯洁,郑振勤,邓柏锋
(1.广州大学 机械与电气工程学院,广东 广州 510006;2.广州大学 电子与通信工程学院,广东 广州 510006;3.广州大学 实验中心,广东 广州 510006)
0 引 言
在四轮小车设计过程中,避障系统的设计是非常关键的一环[1]。精准灵敏的避障系统将使小车实现快速无障碍的自主行走,而灵敏度低、误差大的避障系统将导致小车在行进过程中多走弯路、误碰障碍物,甚至走进某个死角,严重影响小车自主行走效果。目前,四轮小车避障功能一般采用1个或2个超声波,或少量红外线传感器来实现[2]。由于单个超声波的测距角度存在局限性,红外传感器又往往易受光线干扰,导致常规避障设计方法效果不理想,容易出现偏离预定轨迹、触碰到障碍物、局部范围兜圈等问题。
为解决四轮小车常用避障设计方法存在的不足之处,本文将超声波、舵机与红外线传感器相结合,在四轮小车的头部均匀分布2个由超声波与舵机组成的模块,在车体两侧分别安装1个超声波及1个红外传感器,通过综合分析处理4个超声波及2个红外传感器测量的结果,自动判断小车运动状态,从而实现其自主行走及自动避障。
1 避障系统原理
四轮小车的自动避障系统主要由超声波传感器、舵机与红外传感器组成[3],其空间分布情况如图1及图2所示。如图1所示,1号和2号点位各安装一个由舵机与超声波传感器组成的模块,主要负责小车前方障碍物的多角度检测;3号和4号点位各安装一个超声波传感器,负责检测车体两旁的障碍物,提高避障的能力。如图2所示,5号和6号点位各安装一个红外传感器,负责检测图1中1、2号点位超声波模块的盲区,其中5、6号点位位于车体底部,可有效减少光线对红外传感器检测效果的影响。
图1 超声波传感器分布情况
图2 红外传感器布置情况
对于超声波传感器,其检测到障碍物与车身的距离称为障碍物距离d,当障碍物距离小于一个阈值时,小车需要进行避障操作,这个阈值称为安全距离D,而对测量范围较大的小车头部区域,还通过引入舵机以实现多个角度a的超声波障碍检测[4];同时设定1号与2号点位的超声波模块障碍物距离分别为d1与d2,安全距离为D1与D2,两点位舵机每次转动角度为a1与a2;3号与4号点位的超声波模块障碍物距离分别为d3与d4,安全距离为D3与D4。对于5号与6号点位处的红外传感器,其检测的有效直线距离定义为n,在有效距离内若有障碍物,小车也需要进行避障操作。小车在行驶过程中,动态地分析超声波和红外传感器反馈回来的数据,计算出小车在遇到障碍物时需要转动的角度值φ,进而实现自动避障[5]。
小车转动角度值φ的具体计算过程如下,设φ初始值为0,“+”表示转向右方向,“-”表示转向左方向,有:
(1)1,2号位中,当d<D,表示障碍物过于靠近,此时小车停止,需要进一步判断d1与d2的数值。
(2)若d1<D1,表示小车左边有障碍物,则1,2号点位的舵机往右转动a,两侧的超声波重新获取障碍物距离d1,d2,并再次与安全距离进行比较;若d1>D1并且d2>D2,表示此时小车转动φ度即可避开障碍物,用公式φ=+(a+φ)表示,而其他情况,记录为φ=φ+a,并重新执行步骤(2),直到计算出转弯角度;当舵机转动角度到达上限时,则默认φ=+90°。
(3)同理,若d2<D2,表示小车右边有障碍物,则1,2号点位的舵机往左转动a,重复步骤(2),最后得到小车车身向左转φ的角度值。
(4)5,6号位中,红外传感器主要用于检测底部超声波的盲区,从而保护车体底盘的安全,所以当在有效距离内检测到障碍物时,则默认小车转动角度φ=+30°。
(5)3,4号位中,车身两侧的超声波模块主要用于检测小车转弯时两旁的障碍物,其转弯的角度默认为φ=±30°。
2 避障电路设计
小车在行进过程中需要不断地检测所有传感器的状态,并对传感器反馈的数据进行分析处理,最后形成有效的避障方案。为了提高小车避障的灵敏度和准确性,本文选用STM32F407VGT6型32位ARM芯片作为避障系统的微控制器,并以该单片机为核心进行避障系统控制单元及外围电路、传感器接口模块、舵机接口模块及工作状态指示等电路的设计[6]。超声波、红外线传感器及舵机接口电路原理图如图3所示。
图3 避障系统接口电路设计
如图3所示,小车的1~4号超声波传感器均包含TRIG、ECHO、VCC和GND 4个引脚。其中这 4个超声波的VCC、GND由STM32单片机统一供电,分别与STM32的3.3 V、GND相连,而1~4号超声波的TRIG、ECHO引 脚 则 分 别 与 STM32的 PB5-PB6、PB8-PB9、PC8-PC9、PD14-PD15引脚相连。当小车在行进过程遇到障碍物时,先由单片机发出44 μs的TTL触发信号,然后超声波的TRIG连续发送8个40 kHz方波,并检测是否有信号返回,当有信号返回时,超声波ECHO给出一个高电平。超声波从发射到返回的时间即是高电平持续的时间,那么超声波测距的距离=(高电平时间×声速(340 m/s))/2。
对于5、6号红外线传感器,其输出端口OUT分别与STM32的PC6、PC7引脚连接,VCC、GND分别与STM32的3.3 V、GND相连。小车在行进过程中,当5号或6号红外传感器检测到前方障碍物信号时,相对应的OUT端口将持续输出低电平信号。STM32单片机通过电平检测来判断前方是否有障碍物。当PC6或PC7引脚为低电平时,表示小车前方遇到障碍物;反之,当PC6及PC7引脚为高电平时,小车前方不存在障碍物。
对于1,2号舵机,其PWM端口分别与STM32的PA6、PA7引脚连接,VCC、GND分别与单片机供电电源5 V、GND相连。STM32单片机通过调节PWM的占空比来控制1,2号舵机转动的角度,其对应控制关系为:0.5 ms-0°,1.0 ms-45°,1.5 ms-90°,2.0 ms-135°,2.5 ms-180°。小车在行进过程中,通过控制1,2号舵机转动的角度,来实现1,2号超声波角度转动的控制,从而实现小车前方宽角度、实时性的障碍检测。
3 系统软件设计
在小车避障系统设计中,通过STM32单片机采集1~4号超声波及5~6号红外传感器的测量数据,并对该数据进行分析处理,计算出小车的最佳转弯角度,使小车在行进过程中及时、准确地避开障碍物[7-9],系统程序设计流程图如图4所示。
如图4所示,在系统初始化完成后[10],小车开始行进,1~4号超声波及5~6号红外传感器发出障碍物检测信号。当1,2号超声波检测到安全距离内有障碍物时,即把该障碍物的距离返回给STM32单片机,单片机收到距离数据后给小车发送停止前进命令,同时通过调节PWM多次控制舵机转动,实现1,2号超声波的多角度扫描,从而得到小车合适的转弯角度。在小车转弯过程中,利用小车两侧的3,4号超声波检测障碍物是否在安全距离外,当障碍物在安全距离内时,需及时给单片机反馈信息调整合适的转弯角度,以防止因转弯角度不精确而导致撞到障碍物。此外,利用5,6号红外传感器对前方低处的障碍物进行检测,当检测到障碍物处于安全距离内时,将及时通知单片机控制小车停止前进或转动合适的角度,以避免低处的障碍物与小车底盘相撞。
图4 系统程序设计流程图
4 实验结果与分析
该四轮避障小车设计完成后,通过以下方法进行避障参数及避障效果的测试,测试过程如下:
(1)在小车的正前方20 cm处放置3个障碍物,左右两边20 cm处各放置一个障碍物;
(2)设定小车1,2号点位超声波的安全距离D1,D2为15 cm,舵机初始角度都对准正前方,且每次转动角度为5°;
(3)设定小车3,4号点位超声波的安全距离D3与D4为15 cm,5,6号点位红外传感器的安全距离x5与x6为5 cm;
(4)所有传感器与舵机参数设置完成后,小车开始行走,记录小车成功壁开的障碍物数;
(5)调整传感器与舵机参数,对于D1~D4,x5与x6,每次测试的增量都为1 cm,舵机每次转动角度的增量为1度,再重复步骤(4)。
在以上测试过程中,以避开的障碍物数作为参考值,避开的障碍物越多,说明该组参数越好。在得到一组较好的数据后,再改变障碍物的距离重新测试。通过多次的测试,最终得到D1,D2各为20 cm,D3,D4各为15 cm,舵机每次转动角度为5°,x5与x6各为10 cm的效果最好。
在此将该四轮小车应用在本校电信专业的单片机实践教学中,2017—2019年间,电信16级、17级及18级共9个班级(每届3个班),合计约400学生使用该小车开展STM32单片机进行综合性、设计性与创新性实验。按照本文的设计方法,97%以上学生能顺利完成四轮避障小车的制作与程序设计,92%以上学生的设计能获得较好的避障效果。该实践调动了学生学习单片机技术的积极性与主动性,较好地满足了不同层次学生的单片机课程学习需要,达到了预期教学效果。
5 结 语
本文基于STM32单片机实现多种传感器有效的协同工作,对其传入的数据进行合理的分析与计算,实现了四轮小车宽角度有效避障。该设计弥补了单个超声波测距角度有限及红外传感器往往易受光线干扰等不足,对四轮小车在行进过程中偏离预定轨迹、触碰到障碍物、局部范围兜圈等问题提供了一种有效的解决方案。