基于激光雷达的智能避障小车设计及实现
2023-03-01刘雪忠蒋志良1c陈柳元贾翔源杨剑利
赵 攀,刘雪忠,蒋志良,1c,陈柳元,贾翔源,杨剑利
(1.河南工业大学 a.教育部粮食信息处理与控制重点实验室 b.河南省粮食光电检测与控制重点实验室 c.机电工程学院 d.信息科学与工程学院,河南 郑州 450001;2.河南航天液压气动技术有限公司,河南 郑州 450001;3.重庆工程学院 电子信息学院,重庆 400056)
随着科技的不断进步,智能化设备领域的发展越来越快,智能小车作为其中的重要成员,其应用场景也越来越广泛。而避障技术作为智能小车设计中的核心问题之一,一直是研究者关注的热点和难点。传统的避障方式往往基于机械式开关、视觉传感器、红外线测距传感器或超声波传感器等,这些传感器存在灵敏度低、误差大、受环境干扰等缺点,而单线激光雷达能够避免这些问题。因此,在这种背景下,基于激光雷达的智能避障小车的设计备受关注[1-3]。
首先,该技术可以实现无人驾驶,为未来智能交通提供重要的解决方案。其次,对于一些危险或特殊环境,如矿井、石化厂等区域,采用基于该技术的无人驾驶车辆,进入作业可以有效减少人员伤亡事故,提高生产效率。此外,基于激光雷达技术的智能避障小车还可以用于仓库和物流等场合,提高物流配送效率。因此,基于激光雷达技术的智能避障小车的设计方案不仅具有实际意义,也是未来智能制造和智能交通领域的重点发展方向之一[4-5]。
一、硬件设计
(一)系统框图
该系统设计中主要部件的选用如下:STM32F103RCT6主控芯片(以下简称RCT6)、LD14激光雷达、驱动电机模块、舵机控制模块、OLED液晶显示屏以及电源模块,系统总体设计如图1所示,其中单片机作为核心部分主要负责对其他模块的控制。
图1 系统设计框图
根据系统总体设计框图,各模块主要负责以下工作:
(1)激光雷达模块:负责对小车一定范围内的复杂环境进行二维探测,获取周围的障碍物信息。
(2)控制模块:负责控制小车的速度和转动方向,接收来自单片机的数据并实时响应,包括驱动电机模块、舵机模块、OLED模块、蜂鸣器模块。
(3)RCT6主控模块:负责对激光雷达采集到的障碍物信息进行实时的处理和分析,完成对障碍物的定位工作。
(4)蓝牙控制模块:负责与外部设备进行通信,例如将指令通过外设送到单片机进行指定操作或者将小车的速度、转向角度、电源电压等信息实时传输给外设。
(5)电源模块:负责给小车提供足够大的电压,保证正常的功能运转。
(二)单片机最小系统
单片机作为该设计方案的核心模块,采用RCT6作为主控制器,是一种嵌入式微控制器,其工作频率最高可以达到72 MHz,字长32位,程序存储器容量是256 KB,48 KB字节的SRAM,可产生多路PWM用来驱动电机运转。同时,RCT6具有功耗低、工作电压要求低、内置SPI和I2C时序电路等优点。
(三)激光雷达模块
激光雷达模块作为避障处理的核心,可以实现小车前方360°的障碍物信息采集。该模块是通过三角测量法进行距离测量,在每一侧测量时,从一个固定的角度发射激光束,当激光束遇到目标物体后将会发生反射,最终在接收单元接收。通过激光、目标物体、接收单元形成的三角关系,从而计算出目标物体的距离。距离计算公式为:
D=C*(t2-t1)/2。
其中:t1是雷达发射激光的时间,t2是雷达接收到激光的时间,C为光速。
激光雷达能够采集距离和角度信息,将这些信息融合在一起,形成点云数据,并通过无线通讯传输到单片机串口。电机驱动单元则负责控制电机的运转,使用PID算法闭环控制电机达到目标转速。激光雷达中的“雷达点云”指的是360°旋转的传感器在探测平面上的障碍物时,所采集到的所有点云数据。LD14雷达能够探测距离是0.1~25 m,而非可探测范围内的数据可能会不准确或者探测不到障碍物。探测到障碍物时,会在该角度根据障碍物的距离输出一个点,而在探测不到障碍物时则进行空输出。一圈中所有点云数据组合在一起,形成了雷达点云,如图2所示。
图2 雷达点云示意图
(四)蓝牙控制模块
设计中使用BT04蓝牙串口模块,该模块具有功耗低、传输高速、稳定性强等特点。该模块支持AT指令和透传两种工作方式,不仅支持UART串口,还支持蓝牙SPP协议,配备少量的外围元件就能实现不同的功能。该模块主要用于传输短距离的数据信息,可以做到快速与手机蓝牙连接,可以直接代替串口数据线,避免了繁琐的线路连接,广泛应用于蓝牙数据传输、蓝牙音频、智能家居、远程测控、无线数据传输等场合。此外,该模块还提供了灵活的引脚配置和丰富的用户设置项,方便根据具体应用需求进行自定义设置。
(五)编码电机模块
设计中使用的是霍尔编码器,是由霍尔码盘和霍尔元件组成,霍尔码盘是在一个规则的圆板上置入不同的磁极。因为霍尔码盘与电机同轴,在电机旋转时,霍尔元件能够快速地检测到输出的脉冲信号。
为进一步判断转动的方向,往往要求输出的两组方波信号存在一定相位差。然后就可以通过单片机采集A、B相的脉冲数据,根据脉冲换算即可得到电机的数据[6-8]。通常采用A相计数,B相判断转动方向,但该系统进行四倍频设计,即A、B相上升下降沿都计数,通过倍频处理提高精度。
(六)控制舵机模块
舵机是一种由电机、控制电路、齿轮组和电位器等组成的伺服单元,具有精度高、可靠性强、响应速度快等特点。在实际应用中,舵机可以实现自动控制,将电信号转化为角度变化,从而实现机械装置的精确控制[9-11]。
舵机通过输入信号来精确转动电机系统到给定角度,并由电位器检测输出轴转动角度,控制板根据电位器的信息来控制和保持输出轴的角度。舵机需要主控模块产生脉冲调制信号来控制舵机的转动角度,舵机控制器的编码信息等同于脉冲宽度的绝对时长。对于该设计所用到的S20F舵机,控制脉冲周期为20 ms,当脉宽小于0.5 ms时为死区,角度小于或等于-90°;当脉宽大于2.5 ms时为死区,角度大于或等于+90°。
二、软件设计
该系统设计使用Keil 5进行编程,Keil 5拥有单独的库文件,具有更高的性能和更多的功能。用PWM波控制电机的转动方向和速度,用雷达模块准确判断小车周围情况。单片机根据不同的算法输出PWM控制信号,实时调整小车运行速度和方向,实现避障、跟随和蓝牙遥控功能。三个功能的程序设计如下。
(一)避障程序设计
系统设计固定障碍物与小车的间距为400 mm,当激光雷达检测到前方物体与小车的距离小于等于400 mm时,系统会认定前方存在障碍物。此时,小车会减速至80 mm/s,并进行相应的避障操作。然而,如果激光雷达检测到前方物体与小车的间距小于等于150 mm,系统会判定距离过近,不便于进行避障操作,小车将以速度-100 mm/s进行倒车,直至距离大于150 mm,再进行相应的避障操作。避障操作的流程如图3所示:如果前方存在障碍物,激光雷达采集到的角度数据将被处理,以判断障碍物位于小车的左侧还是右侧,然后对舵机进行相应的控制转向,直至前方一定范围内不存在障碍物,小车将以初始速度250 mm/s匀速行驶,完成避障。
图3 雷达避障模式程序流程图
(二)跟随程序设计
在小车运行雷达跟随模式时,单片机首先会分析激光雷达所发送的信号,并执行程序中设定的操作。针对本设计,设定跟随物体的距离为500 mm以内,当激光雷达所测得的前方物体与小车间的距离不超过500 mm时,小车便会认为前方存在可跟随的物体,并选取距离最近的物体作为跟随参照物。但当激光雷达测得的前方物体距离小车不超过150 mm时,小车会认为距离太近,不便于进行跟随工作,因此需要倒车使距离超过150 mm,然后再进行相应的跟随操作。跟随操作的流程如图4所示:若存在跟随参照物,则对激光雷达传输的角度数据进行处理,以确定参照物在小车左侧还是右侧,然后驱动舵机进行转向。若前方不存在可跟随的物体,则小车将保持静止。
图4 雷达跟随模式程序流程图
(三)蓝牙程序设计
在蓝牙遥控模式下,单片机将持续进行串行缓冲区扫描。如果检测到串行数据,单片机将对数据进行自动解析并判断该数据指令。此时,单片机将会根据指令控制驱动电机和舵机工作。
(1)收到字符“YY”,蓝牙模式开启,液晶显示屏上第二行显示“Bluetooth”字样。
(2)收到字符“XX”,蓝牙模式关闭,液晶显示屏上第二行显示“LINKING···”字样。
(3)收到字符“A”,小车左右轮均不转动,小车停止运动。
(4)收到字符“B”,小车左右轮都会正转,正转的速度为初始遥控速度Default_Velocity = 350 mm/s,控制小车直行。
(5)收到字符“C”,小车左右轮都会反转,反转的速度为初始遥控速度Default_Velocity = 350 mm/s,控制小车后退。
(6)收到字符“D”,小车左轮正转速度慢于右轮,同时舵机转向角度Bluetooth_Right_Angle = -Pi / 5,控制小车左转。
(7)收到字符“E”,小车左轮正转速度快于右轮,舵机转向角度Bluetooth_Right_Angle = Pi / 5,控制小车右转。
小车每收到一次指令会一直控制小车执行相应的指令,当需要小车连续执行某动作时,需要通过蓝牙模块连续发送相应的指令字符到小车[12-15]。
三、检测调试
(一)蓝牙调试
首先,需将设备电源开关拨至ON,以进行上电。按键选中(低电平触发),运行界面初始化函数Car_Select_Show( ),以进行OLED界面初始化。当单击User按键,选中Normal模式,需先控制小车进行舵机复位处理。在蓝牙模块未连接的情况下,可发现模块上的LED处于红灯慢闪的状态。顺利进行蓝牙连接的前提是先打开手机蓝牙和定位功能,然后打开“蓝牙调试器APP”搜索蓝牙BT04-A,并在点击右侧加号进行设备连接的过程中,等待蓝牙模块上的LED处于红灯常亮状态,此时便可确认连接成功。需要注意的是,Debug界面上的数据会持续刷新。
进入按键控制选项,可以对控制指令进行重命名。一旦单片机接收到来自APP操作界面的控制命令,就会解析和执行这个命令。小车接收指令的能力通常需要借助硬件设施,例如WiFi模块、蓝牙模块等,才能够完成与APP操作界面的通信和指令交互。具体蓝牙调试界面如图5所示。
图5 APP界面及相应行驶状态
(二)避障调试
上电后连续单击两次User按键,选中Avoid模式,首先控制小车进行舵机复位处理,同时获得向前的初速度250 mm/s。避障时,小车实时地调用雷达传输给RCT6的数据来判断前方是否有障碍物,若没有障碍物则继续匀速前进,若一定范围内存在障碍物,小车进行缓慢减速直到80 mm/s,再判断障碍物所在方向,若角度为负,即障碍物在左边,则小车右转,若角度为正,即障碍物在右边,则小车左转,直到前方一定范围内不存在障碍物,继续匀速前进,完成避障。
雷达避障测试以高度适中的规则纸盒为障碍物,小车的参数设置如下:最小避障距离为150 mm,最大避障距离为400 mm,最大速度为250 mm/s,转向角度为36°[13]。在实验场地分情况布置障碍物,以保证小车实验功能的充分展示,图6为小车的整个雷达避障功能测试图。
图6 小车雷达避障过程图
通过以上试验表明,在雷达避障时,通过分区域采取不同避障操作的方法,可以更好地满足小车的避障需要。
(三)跟随调试
上电后连续单击三次User按键,选中Follow模式,首先控制小车进行舵机复位处理。小车进行物体跟随时,保持初速度为0 mm/s静止,并且实时地调用雷达传输给RCT6的数据。首先判断小车周围-60°~240°以外的500 mm区域内是否有物体,因为在小车后方60°的范围内不能够实现跟随[14]。若雷达测得前方物体与小车的间距不大于500 mm时,则会认为该物体可以作为参照物,再相比较选取距离最近的物体作为最终跟随参考物。但若雷达测得前方物体与小车的间距不大于150 mm,会认为距离太近不便于进行跟随工作,要求小车执行倒车指令到距离大于150 mm,再进行相应跟随操作。如此反复地进行数据处理来保持小车的车头一直指向跟随参照物。
雷达跟随测试以纸盒为跟踪目标,以较均匀的纸盒移动速度进行直行、转弯跟踪。小车的参数设置如下:最小跟随距离为150 mm,最大跟随距离为500 mm,最大速度为250 mm/s,最大检测偏角度为150°[15]。
在跟随过程中对测试实时进行拍摄,小车的整个雷达跟随功能测试如图7所示:图7(a)为拉动目标纸盒向后移动时小车跟随纸盒运动的实物效果,其中目标纸盒与小车的距离也会影响小车的前进速度;图7(b)为目标纸盒在小车的正后方,由于后方60°不在跟随范围内,故当拉动纸盒向后移动时小车静止不动;图(c)为目标纸盒位于小车的右方时,小车舵机控制右转向,转向角度最小为-36°;图(d)为目标纸盒位于小车的左方时,小车舵机控制左转向,转向角度最大也为36°。
图7 小车雷达跟随过程图
根据调试结果,可以得出该小车可以检测车辆周围300°的范围,而基于舵机加超声波系统的智能避障小车检测范围为200°,测量范围提高了50%;另外超声波避障的最大测量距离为4 m,而激光雷达的有效测量距离为0.15~8 m,测量距离范围提高了100%。在测距精度方面,超声波测距在温度影响下,40 °C的温度变化将导致6.8%的声速误差,影响测距精度,超声波检测延迟和RF同步时间差等因素也将导致不同程度误差,而本系统采用的LD14激光雷达,在1 m内的测距误差为5 mm,1 m外的测距误差接近1.7%,受环境影响小,仅考虑温度变化影响的情况下,测距精度将提高近300%[16]。对于基于红外传感器的避障小车,其红外检测距离最大为80 cm,本设计的激光雷达避障小车相比于红外避障小车测量距离提高了900%,而红外测距精度问题随距离增加会有很大波动,在此不做讨论。由上述对比可知基于激光雷达的智能避障小车有着更高的测量精度和测量范围。
四、结束语
本设计采用激光雷达模块采集周围物体的信息,运用Keil 5软件进行编程,经过串口助手和虚拟示波器软件处理后显示对应的数据和波形,从而实现了避障、跟随和蓝牙遥控功能,虽然由于小车前轮舵机和后轮电机精度不够存在着一定的误差,导致小车行驶存在一定的方向和速度上的偏差,但是在整体上实现了所有的预期功能。