基于智慧交通的无人车设计与制作

2020-01-10 07:30王书荟
产业与科技论坛 2019年23期
关键词:高电平障碍物车轮

□谭 瑞 汪 俊 杨 杰 陈 钢 王书荟

一、项目研究背景

中国从20世纪80年代开始进行无人驾驶汽车的研究,而美、英、德等发达国家早在20世纪70年代就已经着手研究,并在可行性和实用化方面都取得了突破性的进展。就国内而言,主要是红旗、百度、清华大学等机构在无人车领域研究较早并取得较为突出的成就。以百度为例,它在2014年7月24日启动“百度无人驾驶汽车”研发计划,2018年2月15日,百度Apollo无人车在港珠澳大桥上,通过无人驾驶模式完成“8”字交叉跑。在国外人们熟知的就是Google和特斯拉两家企业。其中Waymo公司测试用无人车预估已经跑了2,000万公里并且完成超过50亿英里的模拟驾驶,目前谷歌无人驾驶技术还是世界公认最高水平。

就总体而言无人车发展还需要很长的路要走,车速度不快、智能程度不高制约了其发展。相比而言国内的无人驾驶技术相较国外依然存在差距,能否切实解决核心技术水平不高、零部件非国产化严重等问题决定了我国在无人车这块大蛋糕上能分得多少。

二、项目研究目标及主要内容

此次项目是实现无人车基本的自主行驶能力,行驶期间遵守交通法规。实现如下功能。

(一)模拟道路上超车与会车。该项目主要实现无人车在行车过程中对同向龟行车实施超车(可借道),以及与对向车辆完成会车动作后继续行驶通过终点。并继续行驶通过终点。

(二)锥形标+道路标线识别。该项目主要实现无人车在行车过程中对锥形标能否正确识别并避障,以及识别道路交通标线正确减速并在人行横道线前停车5秒后,继续行驶通过终点。

(三)无人车的大灯、转向灯、制动灯必须能正常发挥功能。例如在超车或变道时,同侧的前后转向灯应同频率闪亮,动作结束时熄灭;会车时大灯应闪亮2~3次;减速或停车时刹车灯应亮起,直至减速结束或车辆完全停住时灭灯。

(四)实现自主行驶。无人车上除安装必要的传感和处理设备外,必须实现自主行驶,不得进行远程操控,不得自行在车体之外设置特殊标识或发射电子信号用于辅助驾驶。

(五)完成长10米的无障碍车道自主行驶。不得压线行驶。

三、系统设计与硬件结构框图

本设计是以Arduinomega2560开发板为控制核心,如图1所示,由数据采集系统、控制系统、动力系统组成的智慧交通无人车,通过传感器获取模拟路面数据向单片机做出反馈,单片机根据预先程序设定进行自动判断,随后向L298N电机驱动模块发出指令,通过电机停启与左右车轮差速控制实现路面标志的识别与障碍躲避。采用12vDC电源为Arduino开发板和驱动模块供电,传感器工作电压:5VDC可以采用独立电源,但经过多次调试考虑到空间布置和续航性,发现电源电压也会对传感器的精确度造成影响,最后决定取消这种方案。

图1 无人车系统设计框图

采用降压模块供电方式。无人车传感器主要包括灰度传感器、超声波传感器、红外避障传感器。灰度传感器装在车前部底盘下面,用来检测道路标线,红外避障传感器装在车头部,用来检测前方障碍物,超声波传感器装在车身两侧,用来控制车身方向和调整车身与道路两侧的距离。

(一)E18-D80NK红外避障传感器。E18-D80NK-N这是一种集发射与接收于一体的光电传感器,这是NPN型光电开关,输出状态是0,1,利用光反射原理,模块通电后红外发射管向前方不断发射一定频率的红外线,红外线遇到前方障碍物时,射线返回被接收管接收,此时OUT输出低电平,且串口监视器会接收到数字“1”。如前方无障碍物,射线未被反射,则OUT输出高电平并且串口监视器会接收到数字“0”。检测障碍物的距离可以根据要求通过尾部的电位器旋钮进行调节,感应距离:3~80CM。在接线的时候,避免出现电源和地接错的现象,该操作有可能造成传感器永久性损坏;信号输出端要加上拉电阻。

(二)L298N双H桥直流电机驱动模块。使用的驱动电压为12V(可以接受的输入范围是7~12V)可以使能板载的5V逻辑供电。该驱动板可驱动2路直流电机,使能端ENA、ENB为高电平时有效。对直流电机进行PWM调速,需设置IN1和IN2,确定电机的转动方向,然后对使能端输出PWM脉冲,即可实现调速。当使能信号为0时,电机处于自由停止状态;当使能信号为1时,且IN1和IN2为00或11时,电机处于制动状态,阻止电机转动。

(三)超声波测距模块。HC-SR04超声波模块工作电压:DC 5V,测量范围:2cm~4m。使用Arduino采用数字引脚给SR04的Trig引脚至少10μs的高电平信号,触发SR04模块测距功能。触发后,模块会自动发送8个40KHz的超声波脉冲,并自动检测是否有信号返回。如有信号返回,Echo引脚会输出高电平,高电平持续的时间就是超声波从发射到返回的时间。使用pulseIn()函数(pulseIn():用于检测引脚输出的高低电平的脉冲宽度)获取到测距的结果,并计算出距被测物的实际距离。测试距离s=340m/s×t/2。例如当右侧超声波模块检测到车身距路边距离小于设定值,右边车轮加速并使用延迟程序,向左行驶一段距离后右侧车轮停止加速,左侧车轮加速使车身摆正后,速度回归初值,继续行驶。程序设计上要预留车子反应距离,通过调试设定出最佳两侧差速值。

(四)Arduino mega2560微控制器板。Arduino mega2560是一款基于ATmega2056的微控制器板。它有54个数字输入/输出引脚(其中15个可作PWM输出)、16个模拟输入、4个硬件串行端口、1个16MHz晶体振荡器、1个复位按钮。可通过USB连接或者外部供电,自动选择电源。经试验,开发板加扩展板连接7个光电传感器,1个灰度传感器,1个超声波传感器能正常工作。无人车系统组装除对硬件质量和工作电压有较高要求,还要求各个模块之间互不干扰。

(五)程序设计。程序设计的最大难处在于如何调整车子沿道路正线行驶,流程图如图2所示,已知当车子出现转弯后,回正过程是一个动态过程,延时时间设定、在哪里开始回转、差速值是多少都需要考虑,甚至传感器的灵敏度、电池电量、摩擦系数都会造成影响,这就说明程序的设计上没有一个准确的关系值。通过两侧超声波,测量车身距路边各自距离,判断小车处在哪侧车道。车身一侧传感器检测到数值未能使单片机触发动作,但小车前端检测到障碍物,则单片机给另一侧车轮发出命令,使加速行驶,并根据道路情况设定较长的延时时间。而车身一侧传感器检测到数值使单片机触发动作,但车前传感器并未检测到障碍物,单片机同样给另一侧车轮发出加速命令,这种情况下只需要较短的延时命令,实现小幅度调整。因此两种情况下可以通过判定,设定不同延时时间实现不同情况的功能。

图2 无人车系统设计流程图

按照上面的模拟赛道,小车运行过程:启动、起点放车→直行→遇障碍物左转、左转向灯亮→回正直行、灯灭→遇障碍物右转、右转向灯亮→回正直行、灯灭→减速、刹车灯亮→停车线前停车5秒、灯灭→通过人行横道→终点停车。

四、结语

本设计按照现有交通法规,模拟现实中车辆在道路上安全驾驶。包括实现超车、障碍物躲避、减速、道路交通标线识别及定点停车功能。系统的设计难处在于数据采集系统和控制系统的调试,就传感器而言要考虑传感器自身质量、系统的相互干扰和环境等因素。在软件调试方面要兼顾传感器的性能特点和功能调试,要综合考虑整体无人车系统的兼容性。由于采用4个独立电机控制,根据传感器反馈的各种数据通过单片机调试出最佳左右两侧车轮的差速值,实现高速连贯的躲避障碍物,同时通过原始的数据测量,获得的行驶过程模型,将是最具价值和意义的。

猜你喜欢
高电平障碍物车轮
一种基于FPGA的PWM防错输出控制电路
高低翻越
SelTrac®CBTC系统中非通信障碍物的设计和处理
车轮的位置
赶飞机
TS-03C全固态PDM中波发射机开关机控制电路原理及故障分析
车轮开启赴爱之旅
有趣的车轮转动
浅谈物理电路与数字电路
PDM 1kW中波广播发射机保护电路分析