专利摘要
本发明提供了一种基于位置信息的车载数据路由方法,所述车载数据所处的网络包括车辆节点,每个车辆节点配置一个无线接口以及采集数据的设备;一种数据由名称和坐标唯一标识;一个消息由消息类型、名称、坐标和负载构成。车辆节点通过本发明提供的方法能够快速获取数据,有效降低数据通信延迟、代价以及丢包率,提高服务质量。本发明可应用于交通事故监测,路况监测等诸多领域,具有广泛的应用前景。
权利要求
1.一种基于位置信息的车载数据路由方法,其特征在于,所述车载数据所处的网络包括车辆节点,每个车辆节点配置一个无线接口以及采集数据的设备;
一种数据由名称和坐标唯一标识;
一个消息由消息类型、名称、坐标和负载构成;
消息名称包括信标消息、本地请求消息、本地响应消息、请求消息、响应消息、远程请求消息、远程响应消息和发布消息,分别对应消息类型为1、2、3、4、5、6、7和8;
车辆节点维护一个邻居表,一个邻居表包含二元组集合域和生命周期域,一个二元组包含两个元素:名称和坐标,表示形式为<名称,坐标>,一个二元组标识一种数据;
车辆节点维护一个数据表,一个数据表项包含名称域、坐标域、数据域和生命周期域;
车辆节点V1定期执行下述操作维护邻居表:
步骤101:开始;
步骤102:车辆节点V1查看数据表并创建一个二元组集合参数P1,每个二元组包含名称和坐标,参数P1的初始值为空;针对每一个数据表项,车辆节点V1创建一个二元组<名称,坐标>,其中二元组中的名称和坐标分别等于该数据表项的名称和坐标,如果参数P1中不包含创建的二元组,车辆节点V1则将该二元组加入到参数P1中,否则车辆节点V1不执行任何操作;
步骤103:车辆节点V1发送信标消息,该信标消息的消息类型为1,名称和坐标域值为空,负载为参数P1;
步骤104:邻居车辆节点接收到该信标消息后,查看邻居表;如果存在一个邻居表项,该邻居表项的二元组集合域值等于该信标消息负载中的参数P1,则将该邻居表项中的生命周期设置为最大值,否则该邻居车辆节点创建一个邻居表项,该邻居表项的二元组集合域值等于该信标消息负载中的参数P1,生命周期为最大值;
步骤105:结束;
如果车辆节点检测到一个邻居表项的生命周期衰减为0,则从邻居表中删除该邻居表项;
数据C1由名称NA1和坐标(x1,y1)标识;如果车辆节点V1检测到自己的邻居表中存在一个邻居表项,该邻居表项的二元组集合中包含二元组<NA1,(x1,y1)>,则通过下述过程获取数据C1:
步骤201:开始;
步骤202:车辆节点V1发送本地请求消息,该本地请求消息的消息类型为2,名称为NA1,坐标为(x1,y1),负载为空;
步骤203:邻居车辆节点接收到本地请求消息后,查看数据表;判断是否存在一个数据表项,该数据表项的名称和坐标域值分别等于该本地请求消息的名称和坐标域值,是则执行步骤205,否则执行步骤204;
步骤204:接收到本地请求消息的邻居车辆节点丢弃该本地请求消息,执行步骤207;
步骤205:接收到本地请求消息的邻居车辆节点选择一个数据表项,该数据表项的名称和坐标域值分别等于该本地请求消息的名称和坐标域值,该邻居车辆节点发送一个本地响应消息,该本地响应消息的名称和坐标分别等于该本地请求消息的名称和坐标,消息类型为3,负载为该数据表项中的数据域值;
步骤206:车辆节点V1接收到本地响应消息后,查看数据表,判断是否存在一个数据表项,该数据表项的名称和坐标域值分别等于该本地响应消息的名称和坐标域值,是则丢弃该本地响应消息,否则,车辆节点V1创建一个数据表项,该数据表项的名称和坐标域值分别等于该本地响应消息的名称和坐标域值,数据域值等于该本地响应消息负载中的数据域值,生命周期设置为最大值;
步骤207:结束;
如果车辆节点检测到一个数据表项的生命周期衰减为0,则从数据表中删除该数据表项。
2.根据权利要求1所述的一种基于位置信息的车载数据路由方法,其特征在于,车辆节点保存一个聚合表,每个聚合表项包含名称域、坐标域、距离域和生命周期域;
数据C1由名称NA1和坐标(x1,y1)标识;如果车辆节点V1检测到自己的邻居表中任何一个邻居表项的二元组集合中都不包含二元组<NA1,(x1,y1)>,则通过下述过程获取数据C1:
步骤301:开始;
步骤302:车辆节点V1发送请求消息,该请求消息的消息类型为4,名称为NA1,坐标为(x1,y1),负载为车辆节点V1的坐标和距离参数h0,参数h0的初始值为1;
步骤303:车辆节点接收到请求消息后,将该请求消息负载中的参数h0递增1,查看数据表;判断是否存在一个数据表项,该数据表项的名称和坐标域值分别等于该请求消息的名称和坐标域值,是则执行步骤304,否则执行步骤305;
步骤304:接收到请求消息的车辆节点选择一个数据表项,该数据表项的名称和坐标域值分别等于该请求消息的名称和坐标域值,该车辆节点发送一个响应消息,该响应消息的名称和坐标分别等于该请求消息的名称和坐标,消息类型为5,负载为该数据表项中的数据域值,执行步骤310;
步骤305:判断接收到请求消息的车辆节点的坐标是否等于该请求消息中的坐标,是则执行步骤306,否则执行步骤307;
步骤306:接收到请求消息的车辆节点创建由该请求消息的名称和坐标所标识的数据,创建一个数据表项,该数据表项的名称和坐标域值分别等于该请求消息的名称和坐标域值,数据域值等于创建的数据,生命周期设置为最大值,该车辆节点发送一个响应消息,该响应消息的名称和坐标分别等于该请求消息的名称和坐标,消息类型为5,负载为创建的数据表项中的数据域值,执行步骤310;
步骤307:接收到请求消息的车辆节点查看聚合表,如果存在一个聚合表项,该聚合表项的名称和坐标分别等于该请求消息的名称和坐标,则执行步骤310,否则执行步骤308;
步骤308:接收到请求消息的车辆节点创建一个聚合表项,该聚合表项的名称和坐标分别等于该请求消息的名称和坐标,距离域值等于该请求消息负载中的参数h0,生命周期设置为最大值;该车辆节点判断自己当前坐标与该请求消息的坐标之间的距离是否小于该请求消息负载中的坐标与该请求消息的坐标之间的距离,是则执行步骤309,否则执行步骤310;
步骤309:接收到请求消息的车辆节点转发接收到的请求消息,执行步骤303;
步骤310:车辆节点接收到响应消息后,查看聚合表;判断是否存在一个聚合表项,该聚合表项的名称和坐标分别等于该响应消息的名称和坐标,是则执行步骤311,否则执行步骤312;
步骤311:接收到响应消息的车辆节点选择一个聚合表项,该聚合表项的名称和坐标分别等于该响应消息的名称和坐标,删除该聚合表项,转发该响应消息,执行步骤310;
步骤312:判断接收到响应消息的车辆节点是否为车辆节点V1,是则创建一个数据表项,该数据表项的名称和坐标域值分别等于该响应消息的名称和坐标域值,数据域值等于该响应消息负载中的数据域值,生命周期设置为最大值,否则接收到响应消息的车辆节点丢弃该响应消息;
步骤313:结束。
3.根据权利要求2所述的一种基于位置信息的车载数据路由方法,其特征在于,数据C1由名称NA1和坐标(x1,y1)标识;如果车辆节点V1检测到自己的邻居表中任何一个邻居表项的二元组集合中都不包含二元组<NA1,(x1,y1)>,并且执行301~313并没有获取数据C1,车辆节点V1则通过下述过程获取数据C1:
步骤401:开始;
步骤402:车辆节点V1发送远程请求消息,该远程请求消息的消息类型为6,名称为NA1,坐标为(x1,y1),负载为车辆节点V1的坐标和距离参数h1,参数h1的初始值为1;
步骤403:车辆节点接收到远程请求消息后,将该远程请求消息负载中的参数h1递增1,车辆节点查看数据表;判断是否存在一个数据表项,该数据表项的名称和坐标域值分别等于该远程请求消息的名称和坐标域值,是则执行步骤404,否则执行步骤405;
步骤404:接收到远程请求消息的车辆节点选择一个数据表项,该数据表项的名称和坐标域值分别等于该远程请求消息的名称和坐标域值,该车辆节点发送一个远程响应消息,该远程响应消息的名称和坐标分别等于该远程请求消息的名称和坐标,消息类型为7,负载为该数据表项中的数据域值和该远程请求消息负载中的参数h1,执行步骤410;
步骤405:判断接收到远程请求消息的车辆节点的坐标是否等于该远程请求消息中的坐标,是则执行步骤406,否则执行步骤407;
步骤406:接收到远程请求消息的车辆节点创建由该远程请求消息的名称和坐标所标识的数据,创建一个数据表项,该数据表项的名称和坐标域值分别等于该远程请求消息的名称和坐标域值,数据域值等于创建的数据,生命周期设置为最大值,该车辆节点发送一个远程响应消息,该远程响应消息的名称和坐标分别等于该远程请求消息的名称和坐标,消息类型为7,负载为创建的数据表项中的数据域值和该远程请求消息负载中的参数h1,执行步骤410;
步骤407:接收到远程请求消息的车辆节点查看聚合表,判断是否存在一个聚合表项,该聚合表项的名称和坐标分别等于该远程请求消息的名称和坐标,是则执行步骤410,否则执行步骤408;
步骤408:接收到远程请求消息的车辆节点创建一个聚合表项,该聚合表项的名称和坐标分别等于该远程请求消息的名称和坐标,距离域值等于该远程请求消息负载中的参数h1,生命周期设置为最大值;该车辆节点判断自己当前坐标与该远程请求消息的坐标之间的距离是否小于该远程请求消息负载中的坐标与该远程请求消息的坐标之间的距离,是则执行步骤409,否则执行步骤410;
步骤409:接收到远程请求消息的车辆节点转发接收到的远程请求消息,执行步骤403;
步骤410:判断是否车辆节点V1接收到远程响应消息,是则执行步骤415;否则执行步骤411;
步骤411:车辆节点接收到远程响应消息后,将该远程响应消息负载中的参数h1递减1,查看聚合表;判断是否存在一个聚合表项,该聚合表项的名称和坐标分别等于该远程响应消息的名称和坐标,是则执行步骤412,否则执行步骤413;
步骤412:接收到远程响应消息的车辆节点选择一个聚合表项,该聚合表项的名称和坐标分别等于该远程响应消息的名称和坐标,将该远程响应消息负载中的参数h1值设置为该聚合表项的距离域值,删除该聚合表项,转发该远程响应消息,执行步骤410;
步骤413:接收到远程响应消息的车辆节点判断该远程响应消息负载中的参数h1是否等于0,是则执行步骤416,否则执行步骤414;
步骤414:接收到远程响应消息的车辆节点转发该远程响应消息,执行步骤410;
步骤415:车辆节点V1接收到远程响应消息后,创建一个数据表项,该数据表项的名称和坐标域值分别等于该远程响应消息的名称和坐标域值,数据域值等于该远程响应消息负载中的数据域值,生命周期设置为最大值;
步骤416:结束。
4.根据权利要求1所述的一种基于位置信息的车载数据路由方法,其特征在于,数据C1由名称NA1和坐标(x1,y1)标识;如果位于坐标(x1,y1)的车辆节点V2创建了数据C1,则通过下述过程发布数据C1:
步骤501:开始;
步骤502:车辆节点V2创建一个数据表项,该数据表项的名称和坐标域值分别等于名称NA1和坐标(x1,y1),数据域值等于数据C1,生命周期设置为最大值;车辆节点V2发送一个发布消息,该发布消息的名称和坐标分别等于名称NA1和坐标(x1,y1),消息类型为8,负载为数据C1和参数h2,参数h2的值为正整数N,N取值为大于5的正整数;
步骤503:车辆节点接收到发布消息后,将该发布消息负载中的参数h2递减1,查看数据表;如果存在一个数据表项,该数据表项的名称和坐标分别等于该发布消息的名称和坐标域值,该车辆节点则将该数据表项的数据域值更新为该发布消息负载中的数据,将生命周期设置为最大值;否则,该车辆节点创建一个数据表项,该数据表项的名称和坐标分别等于该发布消息的名称和坐标域值,数据域值设置为该发布消息负载中的数据,生命周期设置为最大值;
步骤504:接收到发布消息的车辆节点查看聚合表;判断是否存在一个聚合表项,该聚合表项的名称和坐标分别等于该发布消息的名称和坐标,是则执行步骤505,否则执行步骤506;
步骤505:接收到发布消息的车辆节点选择一个聚合表项,该聚合表项的名称和坐标分别等于该发布消息的名称和坐标,将该发布消息负载中的参数h2值设置为该聚合表项的距离域值,删除该聚合表项,转发该发布消息,执行步骤503;
步骤506:接收到发布消息的车辆节点判断该发布消息负载中的参数h2是否等于0,是则执行步骤508,否则执行步骤507;
步骤507:接收到发布消息的车辆节点转发该发布消息,执行步骤503;
步骤508:结束。
说明书
技术领域
本发明涉及一种路由方法,尤其涉及的是一种基于位置信息的车载数据路由方法。
背景技术
车载网是提供本地服务的一种服务模式。近年来,很多研究工作致力于车载网,以便使车辆驾驶人能够快速获取网络服务。随着网络技术的发展,车载网会成为未来提供服务的一种模式。
由于车辆节点的移动速度高,因此造成丢包率和数据传输延迟和代价比较大,降低了网络服务性能。因此,如何降低车载网提供服务的延迟和代价、降低丢包率成为近年来研究的热点问题。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种基于位置信息的车载数据路由方法。本发明通过请求聚合等方式来实现车载数据的路由,从而降低车载网提供服务的延迟和代价以及丢包率,有效提高了网络服务性能。
技术方案:本发明公开了一种基于位置信息的车载数据路由方法,其特征在于,所述车载数据所处的网络包括车辆节点,每个车辆节点配置一个无线接口以及采集数据的设备;例如传感单元或者照相机。
一种数据由名称和坐标唯一标识;
一个消息由消息类型、名称、坐标和负载构成;
消息类型如下所示:
车辆节点维护一个邻居表,一个邻居表包含二元组集合域和生命周期域,一个二元组包含两个元素:名称和坐标,表示形式为<名称,坐标>,一个二元组标识一种数据;
车辆节点维护一个数据表,一个数据表项包含名称域、坐标域、数据域和生命周期域;
车辆节点V1定期执行下述操作维护邻居表:
步骤101:开始;
步骤102:车辆节点V1查看数据表并创建一个二元组集合参数P1,每个二元组包含名称和坐标,参数P1的初始值为空;针对每一个数据表项,车辆节点V1创建一个二元组<名称,坐标>,其中二元组中的名称和坐标分别等于该数据表项的名称和坐标,如果参数P1中不包含创建的二元组,车辆节点V1则将该二元组加入到参数P1中,否则车辆节点V1不执行任何操作;参数P1是一个二元组集合,取值为空集或者N个二元组,N为正整数;
步骤103:车辆节点V1发送信标消息,该信标消息的消息类型为1,名称和坐标域值为空,负载为参数P1;
步骤104:邻居车辆节点接收到该信标消息后,查看邻居表;如果存在一个邻居表项,该邻居表项的二元组集合域值等于该信标消息负载中的参数P1,则将该邻居表项中的生命周期设置为最大值,例如500ms,否则该邻居车辆节点创建一个邻居表项,该邻居表项的二元组集合域值等于该信标消息负载中的参数P1,生命周期为最大值;
步骤105:结束;
如果车辆节点检测到一个邻居表项的生命周期衰减为0,则从邻居表中删除该邻居表项。
车辆节点通过上述过程建立邻居表,基于该邻居表项的二元组集合域,车辆节点能够从邻居车辆节点获取所需数据,从而大幅度降低了数据通信延迟和代价。
本发明所述方法中,数据C1由名称NA1和坐标(x1,y1)标识;如果车辆节点V1检测到自己的邻居表中存在一个邻居表项,该邻居表项的二元组集合中包含二元组<NA1,(x1,y1)>,则通过下述过程获取数据C1:
步骤201:开始;
步骤202:车辆节点V1发送本地请求消息,该本地请求消息的消息类型为2,名称为NA1,坐标为(x1,y1),负载为空;
步骤203:邻居车辆节点接收到本地请求消息后,查看数据表;判断是否存在一个数据表项,该数据表项的名称和坐标域值分别等于该本地请求消息的名称和坐标域值,是则执行步骤205,否则执行步骤204;
步骤204:接收到本地请求消息的邻居车辆节点丢弃该本地请求消息,执行步骤207;
步骤205:接收到本地请求消息的邻居车辆节点选择一个数据表项,该数据表项的名称和坐标域值分别等于该本地请求消息的名称和坐标域值,该邻居车辆节点发送一个本地响应消息,该本地响应消息的名称和坐标分别等于该本地请求消息的名称和坐标,消息类型为3,负载为该数据表项中的数据域值;
步骤206:车辆节点V1接收到本地响应消息后,查看数据表,判断是否存在一个数据表项,该数据表项的名称和坐标域值分别等于该本地响应消息的名称和坐标域值,是则丢弃该本地响应消息,否则,车辆节点V1创建一个数据表项,该数据表项的名称和坐标域值分别等于该本地响应消息的名称和坐标域值,数据域值等于该本地响应消息负载中的数据域值,生命周期设置为最大值,例如1h;
步骤207:结束;
如果车辆节点检测到一个数据表项的生命周期衰减为0,则从数据表中删除该数据表项。
车辆节点通过监测邻居表以获取能够提供目标数据的邻居表项,由于上述过程没有指定某个特定的邻居车辆节点提供数据,因此所有能够提供目标数据的邻居车辆节点均返回数据,从而确保车辆节点能够接收到响应数据,解决了无线网络丢包率高的问题,也避免了车辆节点由于数据通信失败而再次请求数据的情况,因此大幅度降低了数据通信延迟和代价。
本发明所述方法中,车辆节点保存一个聚合表,每个聚合表项包含名称域、坐标域、距离域和生命周期域;
数据C1由名称NA1和坐标(x1,y1)标识;如果车辆节点V1检测到自己的邻居表中任何一个邻居表项的二元组集合中都不包含二元组<NA1,(x1,y1)>,则通过下述过程获取数据C1:
步骤301:开始;
步骤302:车辆节点V1发送请求消息,该请求消息的消息类型为4,名称为NA1,坐标为(x1,y1),负载为车辆节点V1的坐标和距离参数h0,参数h0的初始值为1;
步骤303:车辆节点接收到请求消息后,将该请求消息负载中的参数h0递增1,查看数据表;判断是否存在一个数据表项,该数据表项的名称和坐标域值分别等于该请求消息的名称和坐标域值,是则执行步骤304,否则执行步骤305;
步骤304:接收到请求消息的车辆节点选择一个数据表项,该数据表项的名称和坐标域值分别等于该请求消息的名称和坐标域值,该车辆节点发送一个响应消息,该响应消息的名称和坐标分别等于该请求消息的名称和坐标,消息类型为5,负载为该数据表项中的数据域值,执行步骤310;
步骤305:判断接收到请求消息的车辆节点的坐标是否等于该请求消息中的坐标,是则执行步骤306,否则执行步骤307;
步骤306:接收到请求消息的车辆节点创建由该请求消息的名称和坐标所标识的数据,创建一个数据表项,该数据表项的名称和坐标域值分别等于该请求消息的名称和坐标域值,数据域值等于创建的数据,生命周期设置为最大值,该车辆节点发送一个响应消息,该响应消息的名称和坐标分别等于该请求消息的名称和坐标,消息类型为5,负载为创建的数据表项中的数据域值,执行步骤310;
步骤307:接收到请求消息的车辆节点查看聚合表,如果存在一个聚合表项,该聚合表项的名称和坐标分别等于该请求消息的名称和坐标,则执行步骤310,否则执行步骤308;
步骤308:接收到请求消息的车辆节点创建一个聚合表项,该聚合表项的名称和坐标分别等于该请求消息的名称和坐标,距离域值等于该请求消息负载中的参数h0,生命周期设置为最大值,例如1s;该车辆节点判断自己当前坐标与该请求消息的坐标之间的距离是否小于该请求消息负载中的坐标与该请求消息的坐标之间的距离,是则执行步骤309,否则执行步骤310;
步骤309:接收到请求消息的车辆节点转发接收到的请求消息,执行步骤303;
步骤310:车辆节点接收到响应消息后,查看聚合表;判断是否存在一个聚合表项,该聚合表项的名称和坐标分别等于该响应消息的名称和坐标,是则执行步骤311,否则执行步骤312;
步骤311:接收到响应消息的车辆节点选择一个聚合表项,该聚合表项的名称和坐标分别等于该响应消息的名称和坐标,删除该聚合表项,转发该响应消息,执行步骤310;
步骤312:判断接收到响应消息的车辆节点是否为车辆节点V1,是则创建一个数据表项,该数据表项的名称和坐标域值分别等于该响应消息的名称和坐标域值,数据域值等于该响应消息负载中的数据域值,生命周期设置为最大值,否则接收到响应消息的车辆节点丢弃该响应消息;
步骤313:结束。
车辆节点通过数据表能够从距离最近的车辆节点获取所需数据,因此降低了数据通信延迟,此外,车辆节点采用聚合表实现请求消息的聚合,这样,车辆节点能够从中间节点共享数据,因此进一步缩短了数据传输的跳数,降低了数据通信延迟;由于上述过程没有指定特定的目标车辆节点提供数据,因此在请求消息经过的所有中间车辆节点均能够返回数据,此外,上述过程通过聚合表将响应数据返回到源节点,提高了数据通信的成功率。
本发明所述方法中,数据C1由名称NA1和坐标(x1,y1)标识;如果车辆节点V1检测到自己的邻居表中任何一个邻居表项的二元组集合中都不包含二元组<NA1,(x1,y1)>,并且执行301~313并没有获取数据C1,车辆节点V1则通过下述过程获取数据C1:
步骤401:开始;
步骤402:车辆节点V1发送远程请求消息,该远程请求消息的消息类型为6,名称为NA1,坐标为(x1,y1),负载为车辆节点V1的坐标和距离参数h1,参数h1的初始值为1;
步骤403:车辆节点接收到远程请求消息后,将该远程请求消息负载中的参数h1递增1,车辆节点查看数据表;判断是否存在一个数据表项,该数据表项的名称和坐标域值分别等于该远程请求消息的名称和坐标域值,是则执行步骤404,否则执行步骤405;
步骤404:接收到远程请求消息的车辆节点选择一个数据表项,该数据表项的名称和坐标域值分别等于该远程请求消息的名称和坐标域值,该车辆节点发送一个远程响应消息,该远程响应消息的名称和坐标分别等于该远程请求消息的名称和坐标,消息类型为7,负载为该数据表项中的数据域值和该远程请求消息负载中的参数h1,执行步骤410;
步骤405:判断接收到远程请求消息的车辆节点的坐标是否等于该远程请求消息中的坐标,是则执行步骤406,否则执行步骤407;
步骤406:接收到远程请求消息的车辆节点创建由该远程请求消息的名称和坐标所标识的数据,创建一个数据表项,该数据表项的名称和坐标域值分别等于该远程请求消息的名称和坐标域值,数据域值等于创建的数据,生命周期设置为最大值,该车辆节点发送一个远程响应消息,该远程响应消息的名称和坐标分别等于该远程请求消息的名称和坐标,消息类型为7,负载为创建的数据表项中的数据域值和该远程请求消息负载中的参数h1,执行步骤410;
步骤407:接收到远程请求消息的车辆节点查看聚合表,判断是否存在一个聚合表项,该聚合表项的名称和坐标分别等于该远程请求消息的名称和坐标,是则执行步骤410,否则执行步骤408;
步骤408:接收到远程请求消息的车辆节点创建一个聚合表项,该聚合表项的名称和坐标分别等于该远程请求消息的名称和坐标,距离域值等于该远程请求消息负载中的参数h1,生命周期设置为最大值,例如1s;该车辆节点判断自己当前坐标与该远程请求消息的坐标之间的距离是否小于该远程请求消息负载中的坐标与该远程请求消息的坐标之间的距离,是则执行步骤409,否则执行步骤410;
步骤409:接收到远程请求消息的车辆节点转发接收到的远程请求消息,执行步骤403;
步骤410:判断是否车辆节点V1接收到远程响应消息,是则执行步骤415;否则执行步骤411;
步骤411:车辆节点接收到远程响应消息后,将该远程响应消息负载中的参数h1递减1,查看聚合表;判断是否存在一个聚合表项,该聚合表项的名称和坐标分别等于该远程响应消息的名称和坐标,是则执行步骤412,否则执行步骤413;
步骤412:接收到远程响应消息的车辆节点选择一个聚合表项,该聚合表项的名称和坐标分别等于该远程响应消息的名称和坐标,将该远程响应消息负载中的参数h1值设置为该聚合表项的距离域值,删除该聚合表项,转发该远程响应消息,执行步骤410;
步骤413:接收到远程响应消息的车辆节点判断该远程响应消息负载中的参数h1是否等于0,是则执行步骤416,否则执行步骤414;
步骤414:接收到远程响应消息的车辆节点转发该远程响应消息,执行步骤410;
步骤415:车辆节点V1接收到远程响应消息后,创建一个数据表项,该数据表项的名称和坐标域值分别等于该远程响应消息的名称和坐标域值,数据域值等于该远程响应消息负载中的数据域值,生命周期设置为最大值;
步骤416:结束。
为了确保车辆节点获取所需数据,车辆节点通过数据表能够从距离最近的车辆节点获取所需数据,此外,由于在请求消息经过的所有中间车辆节点均能够返回数据,同时,响应数据能够根据聚合表项的距离值进行传输,因此某些车辆节点无需发送请求消息即可获取响应数据,因此降低了数据通信延迟,同时能够确保车辆节点接收到响应数据,解决了无线网络丢包率高的问题,也避免了车辆节点由于数据通信失败而再次请求数据的情况,因此大幅度降低了数据通信延迟和代价。
本发明所述方法中,数据C1由名称NA1和坐标(x1,y1)标识;如果位于坐标(x1,y1)的车辆节点V2创建了数据C1,则通过下述过程发布数据C1:
步骤501:开始;
步骤502:车辆节点V2创建一个数据表项,该数据表项的名称和坐标域值分别等于名称NA1和坐标(x1,y1),数据域值等于数据C1,生命周期设置为最大值;车辆节点V2发送一个发布消息,该发布消息的名称和坐标分别等于名称NA1和坐标(x1,y1),消息类型为8,负载为数据C1和参数h2,参数h2的值为正整数N,N取值为大于5的正整数;
步骤503:车辆节点接收到发布消息后,将该发布消息负载中的参数h2递减1,查看数据表;如果存在一个数据表项,该数据表项的名称和坐标分别等于该发布消息的名称和坐标域值,该车辆节点则将该数据表项的数据域值更新为该发布消息负载中的数据,将生命周期设置为最大值;否则,该车辆节点创建一个数据表项,该数据表项的名称和坐标分别等于该发布消息的名称和坐标域值,数据域值设置为该发布消息负载中的数据,生命周期设置为最大值;
步骤504:接收到发布消息的车辆节点查看聚合表;判断是否存在一个聚合表项,该聚合表项的名称和坐标分别等于该发布消息的名称和坐标,是则执行步骤505,否则执行步骤506;
步骤505:接收到发布消息的车辆节点选择一个聚合表项,该聚合表项的名称和坐标分别等于该发布消息的名称和坐标,将该发布消息负载中的参数h2值设置为该聚合表项的距离域值,删除该聚合表项,转发该发布消息,执行步骤503;
步骤506:接收到发布消息的车辆节点判断该发布消息负载中的参数h2是否等于0,是则执行步骤508,否则执行步骤507;
步骤507:接收到发布消息的车辆节点转发该发布消息,执行步骤503;
步骤508:结束。
车辆节点产生数据后通过上述过程进行发布,在数据发布过程中,车辆节点通过聚合表能够将该数据返回到请求该数据的车辆节点,因此降低了车辆节点获取数据的延迟,同时确保车辆节点获取数据的成功率,此外,某些车辆节点无需发送请求消息即可获取响应数据,进一步降低了数据通信延迟,不仅解决了无线网络丢包率高的问题,也避免了车辆节点由于数据通信失败而再次请求数据的情况。
有益效果:本发明提供了一种基于位置信息的车载数据路由方法,车辆节点通过本发明提供的方法能够快速获取数据,有效降低数据通信延迟、代价以及丢包率,提高服务质量。本发明可应用于交通事故监测,路况监测等诸多领域,具有广泛的应用前景。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1为本发明所述的维护邻居表流程示意图。
图2为本发明所述的本地获取数据流程示意图。
图3为本发明所述的数据通信流程示意图。
图4为本发明所述的获取数据流程示意图。
图5为本发明所述的发布数据流程示意图。
具体实施方式:
本发明提供了一种基于位置信息的车载数据路由方法,车辆节点通过本发明提供的方法能够快速获取数据,有效降低数据通信延迟、代价以及丢包率,提高服务质量。本发明可应用于交通事故监测,路况监测等诸多领域,具有广泛的应用前景。
图1为本发明所述的维护邻居表流程示意图。所述车载数据所处的网络包括车辆节点,每个车辆节点配置一个无线接口以及采集数据的设备;
一种数据由名称和坐标唯一标识;
一个消息由消息类型、名称、坐标和负载构成;
消息类型如下所示:
车辆节点维护一个邻居表,一个邻居表包含二元组集合域和生命周期域,一个二元组包含两个元素:名称和坐标,表示形式为<名称,坐标>,一个二元组标识一种数据;
车辆节点维护一个数据表,一个数据表项包含名称域、坐标域、数据域和生命周期域;
车辆节点V1定期执行下述操作维护邻居表:
步骤101:开始;
步骤102:车辆节点V1查看数据表并创建一个二元组集合参数P1,每个二元组包含名称和坐标,参数P1的初始值为空;针对每一个数据表项,车辆节点V1创建一个二元组<名称,坐标>,其中二元组中的名称和坐标分别等于该数据表项的名称和坐标,如果参数P1中不包含创建的二元组,车辆节点V1则将该二元组加入到参数P1中,否则车辆节点V1不执行任何操作;
步骤103:车辆节点V1发送信标消息,该信标消息的消息类型为1,名称和坐标域值为空,负载为参数P1;
步骤104:邻居车辆节点接收到该信标消息后,查看邻居表;如果存在一个邻居表项,该邻居表项的二元组集合域值等于该信标消息负载中的参数P1,则将该邻居表项中的生命周期设置为最大值,否则该邻居车辆节点创建一个邻居表项,该邻居表项的二元组集合域值等于该信标消息负载中的参数P1,生命周期为最大值;
步骤105:结束;
如果车辆节点检测到一个邻居表项的生命周期衰减为0,则从邻居表中删除该邻居表项。
图2为本发明所述的本地获取数据流程示意图。数据C1由名称NA1和坐标(x1,y1)标识;如果车辆节点V1检测到自己的邻居表中存在一个邻居表项,该邻居表项的二元组集合中包含二元组<NA1,(x1,y1)>,则通过下述过程获取数据C1:
步骤201:开始;
步骤202:车辆节点V1发送本地请求消息,该本地请求消息的消息类型为2,名称为NA1,坐标为(x1,y1),负载为空;
步骤203:邻居车辆节点接收到本地请求消息后,查看数据表;判断是否存在一个数据表项,该数据表项的名称和坐标域值分别等于该本地请求消息的名称和坐标域值,是则执行步骤205,否则执行步骤204;
步骤204:接收到本地请求消息的邻居车辆节点丢弃该本地请求消息,执行步骤207;
步骤205:接收到本地请求消息的邻居车辆节点选择一个数据表项,该数据表项的名称和坐标域值分别等于该本地请求消息的名称和坐标域值,该邻居车辆节点发送一个本地响应消息,该本地响应消息的名称和坐标分别等于该本地请求消息的名称和坐标,消息类型为3,负载为该数据表项中的数据域值;
步骤206:车辆节点V1接收到本地响应消息后,查看数据表,判断是否存在一个数据表项,该数据表项的名称和坐标域值分别等于该本地响应消息的名称和坐标域值,是则丢弃该本地响应消息,否则,车辆节点V1创建一个数据表项,该数据表项的名称和坐标域值分别等于该本地响应消息的名称和坐标域值,数据域值等于该本地响应消息负载中的数据域值,生命周期设置为最大值;
步骤207:结束;
如果车辆节点检测到一个数据表项的生命周期衰减为0,则从数据表中删除该数据表项。
图3为本发明所述的数据通信流程示意图。车辆节点保存一个聚合表,每个聚合表项包含名称域、坐标域、距离域和生命周期域;
数据C1由名称NA1和坐标(x1,y1)标识;如果车辆节点V1检测到自己的邻居表中任何一个邻居表项的二元组集合中都不包含二元组<NA1,(x1,y1)>,则通过下述过程获取数据C1:
步骤301:开始;
步骤302:车辆节点V1发送请求消息,该请求消息的消息类型为4,名称为NA1,坐标为(x1,y1),负载为车辆节点V1的坐标和距离参数h0,参数h0的初始值为1;
步骤303:车辆节点接收到请求消息后,将该请求消息负载中的参数h0递增1,查看数据表;判断是否存在一个数据表项,该数据表项的名称和坐标域值分别等于该请求消息的名称和坐标域值,是则执行步骤304,否则执行步骤305;
步骤304:接收到请求消息的车辆节点选择一个数据表项,该数据表项的名称和坐标域值分别等于该请求消息的名称和坐标域值,该车辆节点发送一个响应消息,该响应消息的名称和坐标分别等于该请求消息的名称和坐标,消息类型为5,负载为该数据表项中的数据域值,执行步骤310;
步骤305:判断接收到请求消息的车辆节点的坐标是否等于该请求消息中的坐标,是则执行步骤306,否则执行步骤307;
步骤306:接收到请求消息的车辆节点创建由该请求消息的名称和坐标所标识的数据,创建一个数据表项,该数据表项的名称和坐标域值分别等于该请求消息的名称和坐标域值,数据域值等于创建的数据,生命周期设置为最大值,该车辆节点发送一个响应消息,该响应消息的名称和坐标分别等于该请求消息的名称和坐标,消息类型为5,负载为创建的数据表项中的数据域值,执行步骤310;
步骤307:接收到请求消息的车辆节点查看聚合表,如果存在一个聚合表项,该聚合表项的名称和坐标分别等于该请求消息的名称和坐标,则执行步骤310,否则执行步骤308;
步骤308:接收到请求消息的车辆节点创建一个聚合表项,该聚合表项的名称和坐标分别等于该请求消息的名称和坐标,距离域值等于该请求消息负载中的参数h0,生命周期设置为最大值;该车辆节点判断自己当前坐标与该请求消息的坐标之间的距离是否小于该请求消息负载中的坐标与该请求消息的坐标之间的距离,是则执行步骤309,否则执行步骤310;
步骤309:接收到请求消息的车辆节点转发接收到的请求消息,执行步骤303;
步骤310:车辆节点接收到响应消息后,查看聚合表;判断是否存在一个聚合表项,该聚合表项的名称和坐标分别等于该响应消息的名称和坐标,是则执行步骤311,否则执行步骤312;
步骤311:接收到响应消息的车辆节点选择一个聚合表项,该聚合表项的名称和坐标分别等于该响应消息的名称和坐标,删除该聚合表项,转发该响应消息,执行步骤310;
步骤312:判断接收到响应消息的车辆节点是否为车辆节点V1,是则创建一个数据表项,该数据表项的名称和坐标域值分别等于该响应消息的名称和坐标域值,数据域值等于该响应消息负载中的数据域值,生命周期设置为最大值,否则接收到响应消息的车辆节点丢弃该响应消息;
步骤313:结束。
图4为本发明所述的获取数据流程示意图。数据C1由名称NA1和坐标(x1,y1)标识;如果车辆节点V1检测到自己的邻居表中任何一个邻居表项的二元组集合中都不包含二元组<NA1,(x1,y1)>,并且执行301~313并没有获取数据C1,车辆节点V1则通过下述过程获取数据C1:
步骤401:开始;
步骤402:车辆节点V1发送远程请求消息,该远程请求消息的消息类型为6,名称为NA1,坐标为(x1,y1),负载为车辆节点V1的坐标和距离参数h1,参数h1的初始值为1;
步骤403:车辆节点接收到远程请求消息后,将该远程请求消息负载中的参数h1递增1,车辆节点查看数据表;判断是否存在一个数据表项,该数据表项的名称和坐标域值分别等于该远程请求消息的名称和坐标域值,是则执行步骤404,否则执行步骤405;
步骤404:接收到远程请求消息的车辆节点选择一个数据表项,该数据表项的名称和坐标域值分别等于该远程请求消息的名称和坐标域值,该车辆节点发送一个远程响应消息,该远程响应消息的名称和坐标分别等于该远程请求消息的名称和坐标,消息类型为7,负载为该数据表项中的数据域值和该远程请求消息负载中的参数h1,执行步骤410;
步骤405:判断接收到远程请求消息的车辆节点的坐标是否等于该远程请求消息中的坐标,是则执行步骤406,否则执行步骤407;
步骤406:接收到远程请求消息的车辆节点创建由该远程请求消息的名称和坐标所标识的数据,创建一个数据表项,该数据表项的名称和坐标域值分别等于该远程请求消息的名称和坐标域值,数据域值等于创建的数据,生命周期设置为最大值,该车辆节点发送一个远程响应消息,该远程响应消息的名称和坐标分别等于该远程请求消息的名称和坐标,消息类型为7,负载为创建的数据表项中的数据域值和该远程请求消息负载中的参数h1,执行步骤410;
步骤407:接收到远程请求消息的车辆节点查看聚合表,判断是否存在一个聚合表项,该聚合表项的名称和坐标分别等于该远程请求消息的名称和坐标,是则执行步骤410,否则执行步骤408;
步骤408:接收到远程请求消息的车辆节点创建一个聚合表项,该聚合表项的名称和坐标分别等于该远程请求消息的名称和坐标,距离域值等于该远程请求消息负载中的参数h1,生命周期设置为最大值;该车辆节点判断自己当前坐标与该远程请求消息的坐标之间的距离是否小于该远程请求消息负载中的坐标与该远程请求消息的坐标之间的距离,是则执行步骤409,否则执行步骤410;
步骤409:接收到远程请求消息的车辆节点转发接收到的远程请求消息,执行步骤403;
步骤410:判断是否车辆节点V1接收到远程响应消息,是则执行步骤415;否则执行步骤411;
步骤411:车辆节点接收到远程响应消息后,将该远程响应消息负载中的参数h1递减1,查看聚合表;判断是否存在一个聚合表项,该聚合表项的名称和坐标分别等于该远程响应消息的名称和坐标,是则执行步骤412,否则执行步骤413;
步骤412:接收到远程响应消息的车辆节点选择一个聚合表项,该聚合表项的名称和坐标分别等于该远程响应消息的名称和坐标,将该远程响应消息负载中的参数h1值设置为该聚合表项的距离域值,删除该聚合表项,转发该远程响应消息,执行步骤410;
步骤413:接收到远程响应消息的车辆节点判断该远程响应消息负载中的参数h1是否等于0,是则执行步骤416,否则执行步骤414;
步骤414:接收到远程响应消息的车辆节点转发该远程响应消息,执行步骤410;
步骤415:车辆节点V1接收到远程响应消息后,创建一个数据表项,该数据表项的名称和坐标域值分别等于该远程响应消息的名称和坐标域值,数据域值等于该远程响应消息负载中的数据域值,生命周期设置为最大值;
步骤416:结束。
图5为本发明所述的发布数据流程示意图。数据C1由名称NA1和坐标(x1,y1)标识;如果位于坐标(x1,y1)的车辆节点V2创建了数据C1,则通过下述过程发布数据C1:
步骤501:开始;
步骤502:车辆节点V2创建一个数据表项,该数据表项的名称和坐标域值分别等于名称NA1和坐标(x1,y1),数据域值等于数据C1,生命周期设置为最大值;车辆节点V2发送一个发布消息,该发布消息的名称和坐标分别等于名称NA1和坐标(x1,y1),消息类型为8,负载为数据C1和参数h2,参数h2的值为正整数N,N取值为大于5的正整数;
步骤503:车辆节点接收到发布消息后,将该发布消息负载中的参数h2递减1,查看数据表;如果存在一个数据表项,该数据表项的名称和坐标分别等于该发布消息的名称和坐标域值,该车辆节点则将该数据表项的数据域值更新为该发布消息负载中的数据,将生命周期设置为最大值;否则,该车辆节点创建一个数据表项,该数据表项的名称和坐标分别等于该发布消息的名称和坐标域值,数据域值设置为该发布消息负载中的数据,生命周期设置为最大值;
步骤504:接收到发布消息的车辆节点查看聚合表;判断是否存在一个聚合表项,该聚合表项的名称和坐标分别等于该发布消息的名称和坐标,是则执行步骤505,否则执行步骤506;
步骤505:接收到发布消息的车辆节点选择一个聚合表项,该聚合表项的名称和坐标分别等于该发布消息的名称和坐标,将该发布消息负载中的参数h2值设置为该聚合表项的距离域值,删除该聚合表项,转发该发布消息,执行步骤503;
步骤506:接收到发布消息的车辆节点判断该发布消息负载中的参数h2是否等于0,是则执行步骤508,否则执行步骤507;
步骤507:接收到发布消息的车辆节点转发该发布消息,执行步骤503;
步骤508:结束。
实施例1
基于表1的仿真参数,本实施例模拟了本发明中的一种基于位置信息的车载数据路由方法,车辆节点启动后,首先执行步骤101-105建立邻居表,如果邻居车辆节点能提供该车辆节点所需数据,则执行201-207获取数据,否则执行步骤301-313获取数据;如果由于车辆节点的高速移动性,该车辆节点无法通过执行步骤301-313获取数据,则执行步骤401-416获取所需数据。车辆节点创建数据后,执行步骤501-508发布数据;性能分析如下:当车辆节点移动速度增加时,丢包率增加,延迟也增加,网络性能下降,当车辆节点移动速度降低时,丢包率下降,延迟也下降,网络性能提高,数据通信延迟降低,数据获取的平均延迟为0.67s。
表1仿真参数
本发明提供了一种基于位置信息的车载数据路由方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。
一种基于位置信息的车载数据路由方法专利购买费用说明
Q:办理专利转让的流程及所需资料
A:专利权人变更需要办理著录项目变更手续,有代理机构的,变更手续应当由代理机构办理。
1:专利变更应当使用专利局统一制作的“著录项目变更申报书”提出。
2:按规定缴纳著录项目变更手续费。
3:同时提交相关证明文件原件。
4:专利权转移的,变更后的专利权人委托新专利代理机构的,应当提交变更后的全体专利申请人签字或者盖章的委托书。
Q:专利著录项目变更费用如何缴交
A:(1)直接到国家知识产权局受理大厅收费窗口缴纳,(2)通过代办处缴纳,(3)通过邮局或者银行汇款,更多缴纳方式
Q:专利转让变更,多久能出结果
A:著录项目变更请求书递交后,一般1-2个月左右就会收到通知,国家知识产权局会下达《转让手续合格通知书》。
动态评分
0.0