基于加速度传感器和机器学习的路面坑洼检测方法与流程

文档序号:11249498阅读:2914来源:国知局
基于加速度传感器和机器学习的路面坑洼检测方法与流程

本发明属于路面检测技术中的坑洼检测方法,具体涉及基于加速度传感器和机器学习的路面坑洼检测方法。



背景技术:

传统坑洼检测技术(路面检测技术)一般是将高清摄像头采集到的图像进行分析,并判断路面上是否有坑挖。目前,使用图像处理的方式来检测坑洼由于使用的摄像头价格较高,而基于此的路面坑洼检测系统的成本较高难以规模化生产。

针对这个问题,最近的坑洼检测系统基于廉价的加速度传感器收集数据,并以阈值的方式检测坑洼。其基本方法是收集汽车行驶在道路上的垂直方向加速度数据并在低速和高速两种情况与阈值进行比较从而判断出是否汽车是否遇到了坑洼。由于车辆本身参数不同,在检测坑洼时用一个固定的阈值进行判断,其准确性较低。

除了直接使用传感器的方式来检测坑洼,有的坑洼检测系统还利用了社交软件来报告坑洼。automaticroadanomalydetectionusingsmartmobiledevice[c],taiy,chanc,hsujy.,conferenceontechnologiesandapplicationsofartificialintelligence,hsinchu,taiwan.2010.(基于智能手机的自动路面坑洼检测,taiy,chanc,hsujy,人工智能的技术前景与应用会议,台湾,2010)中记载了一种使用户在社交软件中反馈的坑洼信息以及gps定位信息的坑洼检测系统。这种检测方法依赖于用户的交互,需要用户在发现坑洼后及时在社交软件上反映坑洼信息,这种的坑洼检测方法的检测延迟完全依赖于用户参与的积极性,有较大的不确定性。



技术实现要素:

针对现有技术中存在的技术问题,本发明所要解决的技术问题就是提供一种基于加速度传感器和机器学习的路面坑洼检测方法,它在现有基于加速度传感器的路面检测技术的基础上,能提高检测的准确性,且不受人主观因素的影响,能提高检测的可靠性。

本发明所要解决的技术问题是通过这样的技术方案实现的,它包括以下步骤:

步骤1、控制器模块采集加速度传感器收集到的加速度数据和gps模块收集到的定位信息数据;

步骤2、使用嵌入式开发板将采集到的加速度传感器数据和gps定位信息数据传送给树莓派;

步骤3、使用树莓派将收集到的道路信息数据存储到嵌入式数据库中并在有网络连接时将数据传输到服务器;

步骤4、服务器接收道路信息数据并计算坑洼检测阈值,使用阈值检测坑洼之后,将坑洼信息数据到传送到地图显示模块;

步骤5、地图显示模块在地图上标注坑洼。

在步骤3中,树莓派不直接与传感器相连而是通过中间的嵌入式开发板进行传感器数据的采集与转发,这种设计模式可以降低整体系统的耦合性并且弥补了树莓派针脚不足的缺陷。

在步骤4中,服务器首先从收集到的道路信息数据集中分离出一部分作为训练集,之后服务器运行k-means机器学习方法,将收集到的道路信息数据分为两类,并计算出其中坑洼数据类加速度特征的平均值,并将此作为坑洼检测阈值;利用该阈值,本发明从测试集中检测出坑洼数据并输出到坑洼信息文件中。

本发明的技术效果是:

与固定的坑洼检测阈值相比,使用机器学习方法得到的检测阈值更贴合实际路面情况,并随着数据量的增长有更高的准确性,因此使用此阈值能提高检测准确率;同时与使用社交软件的坑洼检测方法相比,避免了人的主观因素影响,提高检测的可靠性。

附图说明

本发明的附图说明如下:

图1为发明应用环境的层级结构图;

图2为采集加速度传感器数据和gps模块数据的流程图;

图3为坑洼检测的流程图。

具体实施方式

下面结合附图和实施例对本发明作进一步说明:

本发明应用环境的层级结构如图1所示,第一层是感知层,它由加速度传感器模块、gps模块和控制器模块组成,加速度传感器模块用于汽车行驶时的加速度数据的采集;gps模块用于汽车行驶时的位置信息的采集;控制器模块由arduino嵌入式开发板实现,用于与加速度传感器模块和gps模块进行数据交互,并将所获得的加速度数据和位置信息数据打包后传输到数据存储模块;

感知层之后是数据存储模块,数据存储模块采用树莓派;数据存储模块用于接收感知层中的控制器模块传输的数据并将数据存储到树莓派开发板中的嵌入式数据库中;如果控制器模块检测到网络连接正常后,数据存储模块将道路信息数据(道路信息数据为加速度数据和位置信息数据)传输到坑洼检测模块中,并清空嵌入式数据库;

数据存储模块之后是坑洼检测模块,坑洼检测模块用于接收控制器模块传输的道路信息数据;在完成坑洼检测后,坑洼检测模块将输出坑洼位置信息数据到地图绘制模块中;

坑洼检测模块之后是地图绘制模块,地图绘制模块读取坑洼的位置信息数据,读取后使用高德地图api在地图上标注坑洼。

感知层和数据存储模块设置于车载装置中,坑洼检测模块和地图绘制模块置于服务器中。

本发明包括以下步骤:

步骤1、控制器模块采集加速度传感器收集到的加速度数据和gps模块收集到的定位信息数据;

如图2所示,在arduino嵌入式开发板中,采集数据的具体流程如下:

在步骤s101,流程开始;

在步骤s102,完成初始化工作准备接受传感器数据;

arduino嵌入式开发板上的微控制器与加速度传感器通过spi协议交互数据,微控制器与gps模块通过i2c协议交互;在初始化阶段,微控制器需要初始化一个spi交互实例和i2c交互实例。本实施例使用adxl345作为加速度传感器模块,在接收数据前需要初始化加速度传感器的配置,包括加速度传感器的测量范围和工作模式。本实施例使用adxl345的+/-4g测量范围和测量模式;

在步骤s103,微控制器从i2c交互实例中获取gps模块传输的数据;

gps的采样频率较加速度传感器更慢,因此微控制器在采集数据时以gps模块采样为基准,微控制器将读取到gps模块采集到的汽车行驶时的经纬度、北京时间以及当前速度;

在步骤s104,判断从gps模块中读取到的第一个字符是否为‘$’,如果不是,则执行步骤s103,如果是,则执行步骤s105;

gps以帧格式传输数据,数据帧将以‘$’为开始。如果第一个字符不是‘$’表示微控制器读取到的不是帧的开始或是数据传输错误,程序将跳到步骤s103继续读取数据;如果gps传输数据正常,则执行步骤s105;

在步骤s105,读取加速度传感器数据;

微控制器将读取汽车行驶时的z轴加速度,x轴加速度以及y轴加速度。其中,x轴表示垂直于汽车行径方向并平行于路面方向,y轴代表汽车行进方向,z轴表示垂直于路面方向;

在步骤s106,微控制器打包数据;

将以逗号隔开经度、纬度、速度、z轴加速度、x轴加速度、y轴加速度存入道路信息字符串中,并以换行符作为结尾;

在步骤s107,微控制器使用i2c交互实例将道路信息字符串(包括汽车加速度数据、汽车当前速度、当前北京时间、汽车位置信息)传输至树莓派;

在步骤s108,判断供电是否正常,如果供电正常,则执行步骤s103,继续收集道路数据;如果供电不正常,则执行步骤s109;

微控制器在通电后开始收集数据,在断电停止;

在步骤s109,流程结束。

步骤2、使用arduino嵌入式开发板将采集到的加速度传感器数据和gps的定位信息数据使用usb线传送给树莓派;

该步骤由上述步骤s107完成。

步骤3、树莓派将收集到的道路信息数据存储到树莓派中的嵌入式数据库中,并在有网络连接时将存储的汽车加速度数据、汽车速度数据以及汽车位置信息数据传输到服务器;

服务器为个人电脑,设在在道路检测中心。

步骤4、服务器接收道路信息数据(汽车加速度数据、汽车当前速度数据以及汽车位置信息数据)并计算坑洼检测阈值,使用阈值检测坑洼之后,将坑洼信息数据(坑洼所在的位置信息数据)传送到地图显示模块;

如图3所示,在坑洼检测模块中,坑洼检测的流程如下:

在步骤s201,流程开始:

在步骤s202,使用socket链接通过网络读取存储在树莓派中的道路信息数据;

在步骤s203,生成训练数据;

从读取到的道路信息数据集中随机选取四分之一作为坑洼分类器的训练数据集;

在步骤s204,坑洼分类训练,使用k-means机器学习方法,用步骤s203生成的训练数据集进行训练;

本实施例以道路信息中的z轴加速度(垂直方向)与y轴加速度(汽车行驶方向)为特征进行聚类分析,并将所有数据分为两类。由于汽车在高速和低速情况下的加速度变化情况相异,因此在分类时,本实施例基于高速与低速(速度阈值25km/h)状态分类道路信息数据。

在步骤s205,坑洼阈值计算;

分类后,计算高速和低速两类数据的z轴加速度与y轴加速度的平方差均值,并比较取其较大值作为坑洼检测阈值;

汽车在遇到坑洼时将会产生垂直方向上的正加速度以及行驶方向的负加速度;高速和低速两种情况分别计算,获得两个坑洼检测阈值;

在步骤s206,块读取道路信息数据(汽车加速度数据、汽车当前速度数据以及汽车位置信息数据)测试集(道路信息数据的剩余四分之三)中的一条进行坑洼检测;

在步骤s207,判断读取到的数据中y轴加速度与z轴加速度的平方差是否大于阈值,若是,则执行步骤s208,若不是,则执行步骤s209;

在步骤s208,写入坑洼数据(坑洼所在的位置信息数据)的位置信息到文件中,并以换行符做结尾;

位置信息是指gps模块采集的经纬度;

在步骤s209,判断是否已经读完所有道路信息数据测试集,若不是,则执行步骤s206;若是,则执行步骤s210;

在步骤s210,流程结束。

步骤5、地图显示模块在地图上标注坑洼;

地图显示模块采用高德地图api,它会将接收到的坐标在地图中用蓝色椭圆符号标记出来。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1