基于Arduino的双模式智能避障小车系统设计与实现

2017-11-10 10:32赵云娥吴振强
现代电子技术 2017年21期

赵云娥 吴振强

摘 要: 针对目前智能避障小车存在障碍物距离测量精度不高,存在探测盲区的问题,介绍了一种基于Arduino的智能避障系统。常见的超声波避障模块探测距离远不易受到干扰,但是反应时间长。红外测距探测距离近,测量速度快,精度高,但是受环境影响较大。利用Arduino作为主控系统,采用超声波测距、红外测距等多传感器信息融合的采集系统,优势互补,并通过对数据的算法优化,提升小车对环境的感测精度,有效提高了小车的避障成功率。基于Android开源平台的蓝牙串口通信APK,智能小车既可以自动避障,也可以接受人的帮助,进行人工避障,实现了手动和自动双操作模式,丰富了用户体验。实验证明,该系统运行稳定,对障碍物的探测更加精确,可有效实现全方位避障。

关键词: Arduino; 智能避障; 测距传感器; Android

中图分类号: TN02?34; TP368 文献标识码: A 文章编号: 1004?373X(2017)21?0094?04

Design and implementation of Arduino?based two?mode intelligent

obstacle avoidance system for car

ZHAO Yune1, 2, WU Zhenqiang2

(1. School of Computer Science, Shaanxi Normal University, Xian 710119, China; 2. Qinghai College of Architectural Technology, Xining 810012, China)

Abstract: Since the available intelligent obstacle avoidance system for car has low range measurement accuracy for obstacle and exists the detection blind area, an intelligent obstacle avoidance system based on Arduino is introduced. The commonly?used ultrasonic obstacle avoidance module has far detection distance and is hard to be disturbed, but has long reaction time. The infrared range?finding module has short detection distance, fast measuring speed and high measuring precision, but is affected by the environment greatly. The Arduino is taken as the main control system of the obstacle avoidance system. The acquisition system including ultrasonic rang?finding module, infrared rang?finding module and multi sensors is used to realize the information fusion and advantage complemention. The data is opitimized with the algorithm to improve the environment sensing accuracy and obstacle avoidance success rate of the car effectively. By using the Bluetooth serial communication APK based on the open source platform Android, the smart car can realize the automatic obstacle avoidance, and accept the help of human for artificial obstacle avoidance, which can implement the manual and automatic dual?operation mode and enrich the users′ experience. The experimental results show that the system is running stably, can detect the obstacles accurately, and realize the omnibearing obstacle avoidance effectively.

Keywords: Arduino; intelligent obstacle avoidance; range?finding sensor; Android

0 引 言

智能小车属于多轮驱动机器人的一种,它具有体积小、重心低、运动灵活、操控简单等优点,广泛应用在交通运输、军事、工业制造、生活服务以及空间探测等领域。自动避障技术一直被认为是研究智能小车的一个核心内容。智能小车自动避障综合应用了多传感器信息融合技术、蓝牙或红外数据传输等无线通信技术、机械技术、电子技术等多种尖端技術,自动避障技术集中体现了其自动化、智能化程度的高低。但是,目前智能避障小车存在障碍物距离测量精度不高,存在探测盲区的问题。Arduino是近年流行的一个基于开放原始代码的 Simple I/O 平台,支持多种传感器扩展板,操作简单,功能多样,广泛应用于电子系统设计和互动产品开发方面。本文介绍了一种基于Arduino的智能避障系统,利用Arduino作为主控制板,采用超声波测距、红外测距等多传感器信息融合的采集系统,并通过对数据的算法优化,有效提高了小车的避障成功率。利用Android开源平台的蓝牙串口通信APK,用户也可实现小车人工避障,手动和自动两种操作模式让用户充分享受到操控智能小车的乐趣。endprint

1 系统设计

1.1 系统结构设计

系统总体结构[1]如图1所示。该系统以双直流电机驱动双定向轮+单向轮小车底盘为基础框架,外加信息采集模块(含超声波测距模块HC?SR04和红外测距模块GP2Y0A21K0FK0F)、电机驱动模块(L298N)、电源模块(12 V直流电源)、蓝牙模块(BT?HC05)、上位机模块(Android手机)等。为了实现准确避障和节约成本,信息采集模块的分布如图2所示。

车头前方分别安装HC?SR04(两圆圈表示,与实物形状相似)和GP2Y0A21K0FK0F(矩形表示)各一个,车体左右两边各安装一个GP2Y0A21K0FK0F。此传感器的配置方案主要基于两方面考虑:一方面车体关键信息采集点分布在节约资源的同时满足信息采集的全面性;另一方面,车头是信息采集的主要部位,要尽量扩大采集信息范围,而且必须具备测距精度高,时效快的特点。HC?SR04探测距离远不易受到干扰,但是反应时间长,存在测量盲区。红外测距探测距离近,测量速度快,精度高,但是受环境影响较大。此设计中车头正前方的两种不同的传感器优势互补,有效地提升了小车对环境的感测精度。L298N电机驱动板内置4通道逻辑驱动电路,工作电压为6~12V,能够驱动2个直流电机或者2个二相电机,输出电压可调,可直接接收Arduino主控板I/O接口提供的电平信号。电源模块采用12 V直流电源给L298N供电( 或者8节 1.5 V 干电池),L298N内置的78M05可通过驱动电源部分取电,输出的5 V电压作为Arduino主控板和其他各模块的电源,其中Arduino板输出的3.3 V 电压可供超声波测距模块使用。电源模块在设计中除了考虑系统各模块电压和电流等参数来确保系统工作稳定性,也最大程度地实现了各模块电源转换效率、降低噪声、防止干扰等方面的优化。蓝牙模块BT?HC05默认为从机,采用串口透传模式与Android平台进行数据通信。系统各硬件模块性能稳定,操作简单,具有良好的通信耦合性,符合智能小车的性能要求。

1.2 系统工作原理

Android手机端操控智能小车,提供了手动模式和自动模式两种模式[2]。用户首先需要在Android 2.2以上版本手机中安装手机蓝牙串口通信助手即可对小车进行操控。当手机蓝牙串口通信助手APK运行显示手机和蓝牙模块BT?HC05连接成功后,用户开始发送手机指令来选择系统的工作模式。进入自动模式后,信息采集模块开始工作。当检测到障碍物距离小车大于安全距离(如10 cm,可依据小车速度在算法中动态调整)时,小车保持运动状态;当障碍物和小车距离小于安全距离,则根据各信息采集模块的返回值,Arduino通过算法判断障碍物类型,选择对应的避障策略[3?4],做出对应的避障行为。如分别探测到左面和前面障碍物距离小车小于安全距离,则采取小车右转的避障动作,实现顺利避障;当收到手动控制指令,小车进入手动控制模式,用户可按自己的喜好发送命令控制小车前进、后退等各种动作,并帮助小车避障。整个系统运行过程中,信息采集模块实时测量小车与障碍物的距离,智能小车可以进行自主避障,也可以接受用户控制指令,在用户的帮助下脱离避障困境,两种操作模式增加了互动乐趣。

2 系统软件平台设计

系统软件平台主要分为上位机、信息传输协议、Arduino控制器三个层次。Android具有开放性和硬件支持丰富的特点,Android SDK 2.0以上版本均支持蓝牙开发,采用其提供的蓝牙API接口和相应功能的类开发出蓝牙串口通信软件,实现蓝牙的开启、搜索、连接等功能。信息传输协议主要是手机和BT?HC05的蓝牙串口通信协议,系统采用软件方式设定蓝牙模块的工作模式和工作参数,实现和上位机的通信。Arduino控制器软件模块实现了小车实时接收控制命令,对超声波传感器模块、红外传感器模块收集的数据信息进行优化,对智能小车避障策略进行选择,并通过软件调节驱动直流电机的PWM信号的大小,控制左右轮转速,实现小车的各种避障动作。系统流程图[2,5]如图3所示。

此智能小车系统信息采集模块采用超声波和红外两种不同的技术手段实现了测距。GP2Y0A21K0FK0F 红外传感器测距基于三角测量原理。首先红外发射器以一定的角度发射红外光束,当遇到被测物,光束会被反射回来。反射回来的红外光束在被CCD检测器迅速检测到以后,得到一个偏移值,在已知发射角、偏移值、中心矩和滤镜焦距的情况下,传感器到被测物的距离就能利用三角形几何原理计算出来。测距过程中,首先采用曲线拟合方法拟合出电压值与距离值的数学关系表达式。而传感器传送给Arduino控制板的是其采样的模拟量数据,数据范围为0~1 023,其对应的电压输出值为0~5 V,经过对两者范围值的约束映射,最终推导出实际测距值与采样值之间的关系式为:

[d(测量距离)=2 547.8m(模拟量数据)×0.49-10.41-0.42 cm]

HC?SR04传感器利用声波的反射原理进行测距[6?7],主控板通过ArduinoIDE[8]库自带的pulsein()脉冲时间长度测量函数获得电平持续时间,结合声波传播速度,进而得到测量距离。本系統对以上两组传感器采集的数据进行了比较,从算法上对测量数据进行了优化,增加距离测量的精确度,提高了避障的成功率。具体的算法实现如算法一所示。

算法一: /*测距函数*/

Float meas_distan() //测量障碍物距离

{float dist,dist1,dist2;

int temp1=analogRead(A0); //读取模拟量

dist1=2547.8/((float)temp*0.49?10.41)?0.42;

//计算红外测距值endprint

digitalWrite(trigPin, HIGH);

//触发脚设定成高电位

delayMicroseconds(5); //持续5 μs

digitalWrite(trigPin, LOW);

//触发脚设定成高电位

int temp2=pulseIn(echoPin, HIGH);

//测量超声波脉冲时间长度

dist2=(float)temp2/58; //计算超声波测距值

return min(dist1,dist2); }

//选取较小值作为测距准确值

智能小车利用信息采集模块获取到障碍物位置、距离等信息,选择对应的避障策略,做出对应的避障动作[9]。小车的避障动作包括前进、后退、左转、右转等,每个动作的实现取决于Arduino控制板对电机驱动模块所提供的高低电平和电机的输入转速值。小车左转的示例代码[9]如算法二所示。

算法二:/*电机左转示例程序*/

const byte ENA = 5; //电机A的使能接脚

const byte ENB = 6; //电机B的使能接脚

const byte IN1 = 10; //电机A正转控制引脚

const byte IN2 = 9; //电机A反转控制引脚

const byte IN3 = 8; //电机B正转控制引脚

const byte IN4 = 7; //电机B反转控制引脚

const byte speed = 90; //设定PWM输出值

void turnLeft() { //电机转向:左转

analogWrite(ENA, speed); //电机A的PWM输出

digitalWrite(IN1, LOW);

digitalWrite(IN2, HIGH);

analogWrite(ENB, speed); //电机B的PWM输出

digitalWrite(IN3, HIGH);

digitalWrite(IN4, LOW);}

3 实验测试

小车软硬件平台设计完毕后,其实物如图4所示。为了验证智能小车的避障性能,在实物环境下对其进行实验测试。实验环境为存在多种障碍物的平坦地面,为了增加测试效果的科学性,特地把道路障碍物按形状分为规则(含正方体、圆柱等)和不规则两大类。智能小车在行进过程中信息采集系统不断探测前方周围是否有障碍物,当存在障碍物时,能够判断出相应障碍物的方向和距离,并采取相应的避障动作。为了对比单面避障(车头前方只安装一种测距传感器)和全面避障方法下小车的性能,通过改变障碍物形状对小车进行了避障性能测试。小车处于总数为100由不同比例的规则和不规则障碍物组成的障碍环境,实验次数100次,单面避障和全面避障效果对比如图5所示。由图5可见,与普通的单面避障方法相比,本文使用的全面避障方法有着明显较高的避障成功率,且障碍物形状对避障成功率无明显影响,有效降低了智能小车和障碍物发生碰撞的危险。

4 结 语

本文设计的智能避障小车车体两侧采用两路红外避障,车体前端采用红外和超声波相结合的避障方式,能够对环境进行多面自动探测,实现全方位避障,避障成功率和效率明显提高。另外,手动和自动双操作模式既满足了用户的参与度,也能较好地发挥小车智能性,丰富了用户的操作体验。

实践证明设计的智能小车系统性能稳定、价格低廉、操作简单,今后可结合人工智能技术及汽车智能安全驾驶辅助控制技术,研究小车处于高速运动和动态障碍物环境下的自动避障过程,从而进一步优化其性能。

参考文献

[1] 胡珂.基于Arduino的智能小车测距安全行驶系统的研究[D].西安:长安大学,2015.

[2] 潘元骁.基于Arduino的智能小车自动避障系统设计与研究[D].西安:长安大学,2015.

[3] 戈惠梅,徐晓慧,顾志华,等.基于Arduino的智能小车避障系统的设计[J].现代电子技术,2014,37(11):118?120.

[4] SOORKI M N, TALEBI H A, NIKRAVESH S K Y. A leader?following formation control of multiple mobile robots with active obstacle avoidance [C]// Proceedings of 2011 the 9th Iranian Conference on Electrical Engineering. Tehran: IEEE, 2011: 1?6.

[5] 赵涓涓,杜麒麟,屈明月,等.智能小车的无支路循迹算法设计[J].计算机应用与软件,2013,30(6):147?149.

[6] GAO Tao, YAO Zhenjing. Sensors network for ultrasonic ranging system [J]. International journal of advanced pervasive and ubiquitous computing, 2013, 5(3): 47?59.

[7] 刘崇翔,高美凤.基于多超声波信息融合的小车避障算法实现[J].微计算机信息,2012,28(8):32?34.

[8] 赵英杰.Arduino互动设计入门[M].北京:科学出版社,2014:12?125.

[9] MCROBERTS Michael.Arduino从基础到实践[M].杨继志,郭敬,译.北京:电子工业出版社,2013:92?146.endprint