专利摘要
本发明提供了一种高效的车载网路由方法,所述车载网路包括车辆节点,两个交叉路口之间的道路称为路段,该路段由坐标二元组<源坐标,目的坐标>唯一定义,源坐标和目的坐标分别为定义该路段的两个交叉路口的坐标;所述车载网路覆盖的道路划分为两个以上的路段;所述车载网络通过本发明所提供的通信方法,可保持移动过程中通信的连续性,降低数据包丢失率,从而提高了车载网的服务质量,本发明可应用于道路路况监测、车辆管理等领域,具有广泛的应用前景。
权利要求
1.一种高效的车载网路由方法,其特征在于,所述车载网路包括车辆节点,两个交叉路口之间的道路称为路段,该路段由坐标二元组<源坐标,目的坐标>唯一定义,源坐标和目的坐标分别为定义该路段的两个交叉路口的坐标;所述车载网路覆盖的道路划分为两个以上的路段;
一种类型的数据由一个数据地址唯一标识,一个数据地址由坐标二元组和数据ID构成,坐标二元组唯一定义一个路段,数据ID唯一定义一种数据;
一个交叉路口能够属于两个以上的路段;车辆节点具有定位功能,通过电子地图能够获取每个交叉路口的坐标;如果一个交叉路口属于n个路段,n为大于1的正整数,所述n个路段成为邻居路段;
一个车辆节点维护一个邻居路段表,一个邻居路段表项包含源坐标和目的坐标域;
在路段RS1由交叉路口I1和I2定义,交叉路口I1的坐标为(xI1,yI1),交叉路口I2的坐标为(xI2,yI2),交叉路口I1属于c1个路段,交叉路口I2属于c2个路段,c1和c2为正整数的条件下,位于路段RS1的车辆节点启动后,对于交叉路口I1所属于的每个路段,该车辆节点创建一个邻居路段表项,该邻居路段表项的源坐标为(xI1,yI1),目的坐标为定义该路段的另一个交叉路口的坐标,对于交叉路口I2所属于的每个路段,该车辆节点创建一个邻居路段表项,该邻居路段表项的源坐标为(xI2,yI2),目的坐标为定义该路段的另一个交叉路口的坐标;该车辆节点删除源坐标为(xI1,yI1)且目的坐标为(xI2,yI2)的邻居路段表项以及源坐标为(xI2,yI2)且目的坐标为(xI1,yI1)的邻居路段表项;
一个车辆节点由一个车辆地址唯一标识,一个车辆地址由地理坐标和硬件ID构成;
如果一个车辆节点位于一个圆形区域内,该圆形区域的中心坐标为(xI1,yI1)即交叉路口I1,半径为车辆节点的通信半径,则判定该车辆节点位于交叉路口I1;如果车辆节点的坐标为(x,y),如果满足下列条件之一则判定该车辆节点位于路段RS1:
条件1:xI1>xI2且yI1>yI2且xI1≥x≥xI2且yI1≥y≥yI2,
条件2:xI2>xI1且yI1>yI2且xI2≥x≥xI1且yI1≥y≥yI2,
条件3:xI1>xI2且yI2>yI1且xI1≥x≥xI2且yI2≥y≥yI1,
条件4:xI2>xI1且yI2>y1且xI2≥x≥xI1且yI2≥y≥yI1;
如果车辆节点V1的坐标为(xV1,yV1)且硬件ID为HV1,车辆节点V1位于路段RS1,车辆节点V1检测到数据D1,数据D1由数据地址DA1定义,数据地址DA1的坐标二元组为<(xI1,yI1),(xI2,yI2)>,数据ID为CID1,车辆节点V1则执行下述过程发布数据D1:
步骤101:开始;
步骤102:车辆节点V1构建自己的车辆地址,该车辆节点的坐标为(xV1,yV1),硬件ID为HV1,然后车辆节点V1发送一个数据发布消息,该数据发布消息的源地址为车辆节点V1的车辆地址,目的地址为广播地址,广播地址为每个比特位均为1的地址,负载为数据D1和数据地址DA1;
步骤103:其他车辆节点接收到数据发布消息后,保存数据D1和数据地址DA1,如果接收到数据发布消息的其他车辆节点位于交叉路口I1或者交叉路口I2,则执行步骤105,否则执行步骤104;
步骤104:如果接收到数据发布消息的车辆节点位于交叉路口,即除了交叉路口I1或者交叉路口I2以外的交叉路口,则执行步骤106,否则执行步骤105;
步骤105:接收到数据发布消息的车辆节点转发该数据发布消息,执行步骤103;
步骤106:接收到数据发布消息的车辆节点丢弃该数据发布消息;
步骤107:结束;
车辆节点维护一个邻居车辆表,一个邻居车辆表项包含硬件ID域、坐标域和生命周期域;车辆节点V1的硬件ID为HV1,车辆节点V1启动后,定期执行下述过程建立邻居车辆表:
步骤201:开始;
步骤202:车辆节点构建一个车辆地址,该车辆地址的坐标为自己当前的坐标,硬件为HV1,发送一个信标消息,该信标消息的源地址为构建的车辆地址,目的地址为广播地址,负载为空;
步骤203:接收到信标消息的车辆节点查看邻居车辆表;如果存在一个邻居车辆表项,该邻居车辆表项的硬件ID等于该信标消息的源地址的硬件ID,该车辆节点则将该邻居车辆表项的坐标更新为该信标消息的源地址的坐标,将生命周期设置为最大值,否则,该车辆节点创建一个邻居车辆表项,该邻居车辆表项的硬件ID等于该信标消息的源地址的硬件ID,该邻居车辆表项的坐标等于该信标消息的源地址的坐标,将生命周期设置为最大值;
步骤204:结束;
在车辆节点V1的坐标为(xV1,yV1)且硬件ID为HV1,路段RS1由交叉路口I1和I2定义,交叉路口I1的坐标为(xI1,yI1),交叉路口I2的坐标为(xI2,yI2)的条件下,如果车辆节点V1位于路段RS1,则通过下述过程获取邻居路段的数据:
步骤301:开始;
步骤302:车辆节点V1构建一个车辆地址,该车辆地址的坐标为(xV1,yV1),硬件ID为HV1,车辆节点V1发送请求消息,该请求消息的源地址为该车辆地址,目的地址为广播地址,负载为空;
步骤303:其他车辆节点接收到请求消息后,如果该车辆节点检测到数据D2,数据D2由数据地址DA2标识,数据地址DA2的数据ID为CID2,坐标二元组为定义该车辆节点所在路段的坐标二元组,则执行步骤304,否则执行步骤305;
步骤304:接收到请求消息的车辆节点查看邻居车辆表,如果存在一个邻居车辆表项,该邻居车辆表项的硬件ID等于该请求消息的源地址的硬件ID,该车辆节点则发送一个响应消息,该响应消息的源地址和目的地址均为接收到的请求消息的源地址,负载为数据D2和数据地址DA2;否则,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与接收到的请求消息的源地址的坐标距离最近,该车辆节点构建一个车辆地址,该车辆地址的硬件ID和坐标分为等于该邻居车辆表项的硬件ID和坐标,然后车辆地址发送一个响应消息,该响应消息的源地址为构建的车辆地址,目的地址为接收到的请求消息的源地址,负载为数据D2和数据地址DA2;
步骤305:如果接收到请求消息的车辆节点位于交叉路口I1或者交叉路口I2,则执行步骤307,否则执行步骤306;
步骤306:如果接收到请求消息的车辆节点位于交叉路口,即除了交叉路口I1或者交叉路口I2以外的交叉路口,则执行步骤308,否则执行步骤307;
步骤307:接收到请求消息的车辆节点转发该请求消息,执行步骤303;
步骤308:接收到请求消息的车辆节点丢弃该请求消息;
步骤309:判断是否车辆节点V1接收到响应消息,如果是则执行步骤313,否则执行步骤310;
步骤310:判断接收到响应消息的车辆节点的硬件ID是否等于该响应消息的源地址的硬件ID,如果等于,则执行步骤312,否则执行步骤311;
步骤311:接收到响应消息的车辆节点丢弃该响应消息,执行步骤313;
步骤312:接收到响应消息的车辆节点查看邻居车辆表,如果存在一个邻居车辆表项,该邻居车辆表项的硬件ID等于该响应消息的目的地址的硬件ID,该车辆节点则构建一个车辆地址,该车辆节点的硬件ID和坐标分别等于该邻居车辆表项的硬件ID和坐标,将该响应消息的源地址和目的地址均更新为构建的车辆地址,转发该响应消息;否则,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与接收到的响应消息的目的地址的坐标距离最近,该车辆节点构建一个车辆地址,该车辆地址的硬件ID和坐标分为等于该邻居车辆表项的硬件ID和坐标,将该响应消息的源地址更新为构建的车辆地址,转发该响应消息;执行步骤309;
步骤313:车辆节点V1接收到响应消息后,保存该响应消息中的数据;
步骤314:结束;
在车辆节点V1的坐标为(xV1,yV1)且硬件ID为HV1,路段RS1由交叉路口I1和I2定义,交叉路口I1的坐标为(xI1,yI1),交叉路口I2的坐标为(xI2,yI2),车辆节点V1位于路段RS1,源坐标到目的坐标的路径由两个以上的路段构成,路径由坐标二元组集合定义,该坐标二元组集合中的每个坐标二元组定义该路径中所包含的一个路段的条件下,车辆节点V1通过下述过程发现从源坐标(xV1,yV1)途径(xI1,yI1)到目的坐标(xd,yd)的所有路径:
步骤401:开始;
步骤402:车辆节点V1选择一个邻居车辆表项,该邻居车辆表项的坐标距离(xI1,yI1)最近;车辆节点V1构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID;车辆节点V1发送路径消息,该路径消息的源地址为车辆节点V1的车辆地址,目的地址为构建的车辆地址,负载为坐标(xd,yd)以及坐标二元组集合{<(xd,yd),(xI1,yI1)>};
步骤403:判断是否位于坐标(xd,yd)的车辆节点接收到该路径消息,如果是则执行步骤409,否则执行步骤404;
步骤404:如果接收到路径消息的目的车辆节点位于交叉路口,且目的车辆节点的硬件ID与该路径消息的目的地址的硬件ID相同,则执行步骤406,否则执行步骤405;
步骤405:接收到路径消息的车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该路径消息负载中坐标二元组集合的最后一个坐标二元组的第二个元素的距离最近;接收到路径消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID;接收到路径消息的车辆节点将该路径消息的目的地址更新为构建的车辆地址,转发该路径消息,执行步骤403;
步骤406:接收到路径消息的车辆节点查看邻居路段表,判断是否存在一个邻居路段表项,坐标(xd,yd)位于该邻居路段表项的源坐标和目的坐标所标识的路段上,如果是则执行步骤407,否则执行步骤408;
步骤407:接收到路径消息的车辆节点将坐标二元组<(xs,ys),(xd,yd)>加入到该路径消息的坐标二元组集合中并作为该集合中的最后一个坐标二元组,坐标(xs,ys)为该车辆节点位于的交叉路口的坐标,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该路径消息负载中坐标二元组集合的最后一个坐标二元组的第二个元素的距离最近,该车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,该车辆节点将该路径消息的目的地址更新为构建的车辆地址,转发该路径消息,执行步骤403;
步骤408:接收到路径消息的车辆节点查看所有源坐标等于(xs,ys)的邻居路段表项,针对每个选中的邻居路段表项R1,该车辆节点执行下述操作:如果满足条件5,该车辆节点将坐标二元组<(xs,ys),(xR1,yR1)>加入到该路径消息的坐标二元组集合中并作为该集合的最后一个坐标二元组,(xR1,yR1)为邻居路段表项R1的目的坐标,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该路径消息负载中坐标二元组集合的最后一个坐标二元组的第二个元素距离最近,该车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,将该路径消息的目的地址更新为构建的车辆地址,转发该路径消息,执行步骤403;
条件5:
步骤409:位于坐标(xd,yd)的车辆节点接收到该路径消息后,设置一个坐标二元组集合变量T,变量T的初始值等于该路径消息负载中的坐标二元组集合,选择一个邻居车辆表项,该邻居车辆表项的坐标与变量T的最后一个坐标二元组的第一个元素距离最近,位于坐标(xd,yd)的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,位于坐标(xd,yd)的车辆节点发送一个确认消息,该确认消息的源地址为该车辆节点的车辆地址,目的地址为构建的车辆地址,负载为接收到的路径消息负载中的坐标二元组集合以及变量T;
步骤410:如果车辆节点V1接收到该确认消息,则执行步骤414,否则执行步骤411;
步骤411:如果接收到确认消息的目的车辆节点位于交叉路口,目的车辆节点的硬件ID与该确认消息的目的地址的硬件ID相同,则执行步骤413,否则执行步骤412;
步骤412:接收到确认消息的车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该确认消息负载中变量T中的最后一个坐标二元组的第一个元素的距离最近,接收到确认消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,将该确认消息的目的地址更新为构建的车辆地址,转发该确认消息,执行步骤410;
步骤413:接收到确认消息的车辆节点从该确认消息负载中的变量T中删除最后一个坐标二元组,选择一个邻居车辆表项,该邻居车辆表项的坐标与该确认消息负载中变量T中的最后一个坐标二元组的第一个元素的距离最近,接收到确认消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,将该确认消息的目的地址更新为构建的车辆地址,转发该确认消息,执行步骤410;
步骤414:车辆节点V1接收到确认消息后,保存该确认消息负载中的坐标二元组集合;
步骤415:结束;
在车辆节点V1的坐标为(xV1,yV1)且硬件ID为HV1,路径P1为源坐标为(xV1,yV1)到达目的坐标(xd,yd)的路径,路径P1由坐标二元组集合S1定义的条件下,车辆节点V1通过下述过程获取路径P1所产生的数据:
步骤501:开始;
步骤502:车辆节点V1设置坐标二元组集合参数TS和TD,参数TS的初始值为空集,参数TD的初始值等于坐标二元组集合S1;车辆节点V1将变量TD中的第一个坐标二元组加入到变量TS中,选择一个邻居车辆表项,该邻居车辆表项的坐标与参数TS中的最后一个坐标二元组的第二个元素的距离最近,然后车辆节点V1构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,车辆节点V1发送一个数据请求消息,该数据请求消息的源地址为车辆节点V1的车辆地址,目的地址为构建的车辆节点,负载为参数TS和参数TD;
步骤503:其他车辆节点接收到数据请求消息后,如果该车辆节点检测到数据D3,数据D3由数据地址DA3唯一标识,数据地址DA3的数据ID为CID3,坐标二元组等于参数TS中的最后一个坐标二元组,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与变量TS中的最后一个坐标二元组的第一个元素距离最近,然后该车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,然后一个数据响应消息,该数据响应消息的源地址为该车辆节点的车辆地址,目的地址为构建的车辆地址,负载为参数TS,数据D3和数据地址DA3;
步骤504:判断是否位于交叉路口的车辆节点接收到数据请求消息,如果是则执行步骤506,否则执行步骤505;
步骤505:接收到数据请求消息的车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该数据请求消息负载中的参数TD中的最后一个坐标二元组的第二个元素距离最近,接收到数据请求消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别为该邻居车辆表项的坐标和硬件ID,将该数据请求消息的目的地址更新为构建的车辆地址,转发该数据请求消息,执行步骤503;
步骤506:接收到数据请求消息的车辆节点从该数据请求消息的参数TD中删除最后一个坐标二元组,如果参数TD为空集,则执行步骤508,否则执行步骤507;
步骤507:接收到数据请求消息的车辆节点将该数据请求消息中的参数TD中的最后一个坐标二元组加到参数TS中并作为参数TS中的最后一个坐标二元组,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该数据请求消息负载中的参数TD中的最后一个坐标二元组的第二个元素距离最近,接收到数据请求消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别为该邻居车辆表项的坐标和硬件ID,将该数据请求消息的目的地址更新为构建的车辆地址,转发该数据请求消息,执行步骤503;
步骤508:如果车辆节点V1接收到数据响应消息,则执行步骤512,否则执行步骤509;
步骤509:如果位于交叉路口的车辆节点接收到数据响应消息,则执行步骤511,否则执行步骤510;
步骤510:接收到数据响应消息的车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该数据响应消息负载中的参数TS中的最后一个坐标二元组的第一个元素距离最近,接收到数据响应消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别为该邻居车辆表项的坐标和硬件ID,将该数据响应消息的目的地址更新为构建的车辆地址,转发该数据响应消息,执行步骤508;
步骤511:接收到数据响应消息的车辆节点删除该数据响应消息中的参数TS中的最后一个坐标二元组,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该数据响应消息负载中的参数TS中的最后一个坐标二元组的第一个元素距离最近,接收到数据响应消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别为该邻居车辆表项的坐标和硬件ID,将该数据响应消息的目的地址更新为构建的车辆地址,转发该数据响应消息,执行步骤508;
步骤512:车辆节点V1接收到该数据响应消息后,保存该数据响应中的数据;
步骤513:结束。
说明书
技术领域
本发明涉及一种路由方法,尤其涉及的是一种高效的车载网路由方法。
背景技术
车载自组网由于其实用性已经受到广泛关注,成为研究的热点。车载自组网的主要特点之一为车辆节点沿路进行高速移动,因此,如何实现车辆节点的高质量通信为研究的热点之一。
目前现有的通信协议应用到车载网络中还存在一些问题,主要原因为如下:
1)现有协议中,移动节点需要发送和接收大量的控制信息来确保移动过程中的通信畅通,减少数据包的丢失,而传输控制信息会消耗大量的能量,这会大幅度缩减移动节点的寿命;
2)现有协议的控制信息数据包开销较大,移动转交延迟较长从而提高了数据包丢失率。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种高效的车载网路由方法。
技术方案:本发明公开了一种高效的车载网路由方法,所述车载网路包括车辆节点,两个交叉路口之间的道路称为路段,该路段由坐标二元组<源坐标,目的坐标>唯一定义,源坐标和目的坐标分别为定义该路段的两个交叉路口的坐标;所述车载网路覆盖的道路划分为两个以上的路段;
一种类型的数据由一个数据地址唯一标识,一个数据地址由坐标二元组和数据ID构成,坐标二元组唯一定义一个路段,数据ID唯一定义一种数据,例如位于路段RS1的交通事故;
一个交叉路口能够属于两个以上的路段;车辆节点具有定位功能,通过电子地图能够获取每个交叉路口的坐标;如果一个交叉路口属于n个路段,n为大于1的正整数,所述n个路段成为邻居路段;
一个车辆节点维护一个邻居路段表,一个邻居路段表项包含源坐标和目的坐标域;
在路段RS1由交叉路口I1和I2定义,交叉路口I1的坐标为(xI1,yI1),交叉路口I2的坐标为(xI2,yI2),交叉路口I1属于c1个路段,交叉路口I2属于c2个路段,c1和c2为正整数的条件下,位于路段RS1的车辆节点启动后,对于交叉路口I1所属于的每个路段,该车辆节点创建一个邻居路段表项,该邻居路段表项的源坐标为(xI1,yI1),目的坐标为定义该路段的另一个交叉路口的坐标,对于交叉路口I2所属于的每个路段,该车辆节点创建一个邻居路段表项,该邻居路段表项的源坐标为(xI2,yI2),目的坐标为定义该路段的另一个交叉路口的坐标;该车辆节点删除源坐标为(xI1,yI1)且目的坐标为(xI2,yI2)的邻居路段表项以及源坐标为(xI2,yI2)且目的坐标为(xI1,yI1)的邻居路段表项;
一个车辆节点由一个车辆地址唯一标识,一个车辆地址由地理坐标和硬件ID构成,硬件ID可以是MAC地址;
如果一个车辆节点位于一个圆形区域内,该圆形区域的中心坐标为(xI1,yI1)即交叉路口I1,半径为车辆节点的通信半径,则判定该车辆节点位于交叉路口I1;如果车辆节点的坐标为(x,y),如果满足下列条件之一则判定该车辆节点位于路段RS1:
条件1:xI1>xI2且yI1>yI2且xI1≥x≥xI2且yI1≥y≥yI2,
条件2:xI2>xI1且yI1>yI2且xI2≥x≥xI1且yI1≥y≥yI2,
条件3:xI1>xI2且yI2>yI1且xI1≥x≥xI2且yI2≥y≥yI1,
条件4:xI2>xI1且yI2>y1且xI2≥x≥xI1且yI2≥y≥yI1;
如果车辆节点V1的坐标为(xV1,yV1)且硬件ID为HV1,车辆节点V1位于路段RS1,车辆节点V1检测到数据D1,数据D1由数据地址DA1定义,数据地址DA1的坐标二元组为<(xI1,yI1),(xI2,yI2)>,数据ID为CID1,例如路段RS1发生的交通事故,车辆节点V1则执行下述过程发布数据D1:
步骤101:开始;
步骤102:车辆节点V1构建自己的车辆地址,该车辆节点的坐标为(xV1,yV1),硬件ID为HV1,然后车辆节点V1发送一个数据发布消息,该数据发布消息的源地址为车辆节点V1的车辆地址,目的地址为广播地址,广播地址为每个比特位均为1的地址,负载为数据D1和数据地址DA1;
步骤103:其他车辆节点接收到数据发布消息后,保存数据D1和数据地址DA1,例如选择另外一条道路以避免交通事故引起的拥塞;如果接收到数据发布消息的其他车辆节点位于交叉路口I1或者交叉路口I2,则执行步骤105,否则执行步骤104;
步骤104:如果接收到数据发布消息的车辆节点位于交叉路口,即除了交叉路口I1或者交叉路口I2以外的交叉路口,交叉路口I1或者交叉路口I2的邻居交叉路口,则执行步骤106,否则执行步骤105;
步骤105:接收到数据发布消息的车辆节点转发该数据发布消息,执行步骤103;
步骤106:接收到数据发布消息的车辆节点丢弃该数据发布消息;
步骤107:结束。
车辆节点通过上述过程发布数据将数据发布到本路段以及邻居路段的所有车辆节点,这样车辆节点可以根据发布的数据来实现安全驾驶以及高效驾驶;例如车辆节点检测到本路段发生交通拥塞后,将该信息发布到位于邻居路段的车辆节点,这样这些车辆节点可以选择另外一条道路以避免交通事故引起的拥塞。
本发明所述方法中,车辆节点维护一个邻居车辆表,一个邻居车辆表项包含硬件ID域、坐标域和生命周期域;车辆节点V1的硬件ID为HV1,车辆节点V1启动后,定期执行下述过程建立邻居车辆表:
步骤201:开始;
步骤202:车辆节点构建一个车辆地址,该车辆地址的坐标为自己当前的坐标,硬件为HV1,发送一个信标消息,该信标消息的源地址为构建的车辆地址,目的地址为广播地址,负载为空;
步骤203:车辆节点接收到信标消息后,查看邻居车辆表;如果存在一个邻居车辆表项,该邻居车辆表项的硬件ID等于该信标消息的源地址的硬件ID,该车辆节点则将该邻居车辆表项的坐标更新为该信标消息的源地址的坐标,将生命周期设置为最大值,例如100ms;否则,该车辆节点创建一个邻居车辆表项,该邻居车辆表项的硬件ID等于该信标消息的源地址的硬件ID,该邻居车辆表项的坐标等于该信标消息的源地址的坐标,将生命周期设置为最大值;
步骤204:结束。
车辆节点通过上述过程建立邻居车辆表,从而获取邻居车辆节点的实时坐标,这样车辆节点可以根据邻居车辆节点的实时坐标可以选择到达目的车辆节点的下一跳,从而构建到达目的车辆节点的最优路由路径,由于上述过程通过生命周期来确保每个邻居车辆节点信息的有效性和实时性,因此,上述过程确保了最优路由路径的实时性和最优性。
本发明所述方法中,在车辆节点V1的坐标为(xV1,yV1)且硬件ID为HV1,路段RS1由交叉路口I1和I2定义,交叉路口I1的坐标为(xI1,yI1),交叉路口I2的坐标为(xI2,yI2)的条件下,如果车辆节点V1位于路段RS1,则通过下述过程获取邻居路段的数据:
步骤301:开始;
步骤302:车辆节点V1构建一个车辆地址,该车辆地址的坐标为(xV1,yV1),硬件ID为HV1,车辆节点V1发送请求消息,该请求消息的源地址为该车辆地址,目的地址为广播地址,负载为空;
步骤303:其他车辆节点接收到请求消息后,如果该车辆节点检测到数据D2,数据D2由数据地址DA2标识,数据地址DA2的数据ID为CID2,坐标二元组为定义该车辆节点所在路段的坐标二元组,则执行步骤304,否则执行步骤305;
步骤304:接收到请求消息的车辆节点查看邻居车辆表,如果存在一个邻居车辆表项,该邻居车辆表项的硬件ID等于该请求消息的源地址的硬件ID,该车辆节点则发送一个响应消息,该响应消息的源地址和目的地址均为接收到的请求消息的源地址,负载为数据D2和数据地址DA2;否则,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与接收到的请求消息的源地址的坐标距离最近,该车辆节点构建一个车辆地址,该车辆地址的硬件ID和坐标分为等于该邻居车辆表项的硬件ID和坐标,然后车辆地址发送一个响应消息,该响应消息的源地址为构建的车辆地址,目的地址为接收到的请求消息的源地址,负载为数据D2和数据地址DA2;
步骤305:如果接收到请求消息的车辆节点位于交叉路口I1或者交叉路口I2,则执行步骤307,否则执行步骤306;
步骤306:如果接收到请求消息的车辆节点位于交叉路口,即除了交叉路口I1或者交叉路口I2以外的交叉路口,即交叉路口I1或者交叉路口I2的邻居交叉路口,则执行步骤308,否则执行步骤307;
步骤307:接收到请求消息的车辆节点转发该请求消息,执行步骤303;
步骤308:接收到请求消息的车辆节点丢弃该请求消息;
步骤309:判断是否车辆节点V1接收到响应消息,如果是则执行步骤313,否则执行步骤310;
步骤310:判断接收到响应消息的车辆节点的硬件ID是否等于该响应消息的源地址的硬件ID,则执行步骤312,否则执行步骤311;
步骤311:接收到响应消息的车辆节点丢弃该响应消息,执行步骤313;
步骤312:接收到响应消息的车辆节点查看邻居车辆表,如果存在一个邻居车辆表项,该邻居车辆表项的硬件ID等于该响应消息的目的地址的硬件ID,该车辆节点则构建一个车辆地址,该车辆节点的硬件ID和坐标分别等于该邻居车辆表项的硬件ID和坐标,将该响应消息的源地址和目的地址均更新为构建的车辆地址,转发该响应消息;否则,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与接收到的响应消息的目的地址的坐标距离最近,该车辆节点构建一个车辆地址,该车辆地址的硬件ID和坐标分为等于该邻居车辆表项的硬件ID和坐标,将该响应消息的源地址更新为构建的车辆地址,转发该响应消息;执行步骤309;
步骤313:车辆节点V1接收到响应消息后,保存该响应消息中的数据;
步骤314:结束。
车辆节点通过上述过程能够快速获取邻居路段的数据从而实现安全驾驶以及高效驾驶;例如车辆节点通过获取邻居路段是否发生交通事故或者是否发生拥塞来决定是否选择该路段到达目的地,如果检测到该路段发生交通拥塞,则可以选择另外一条道路从而快速到达目的地。
本发明所述方法中,在车辆节点V1的坐标为(xV1,yV1)且硬件ID为HV1,路段RS1由交叉路口I1和I2定义,交叉路口I1的坐标为(xI1,yI1),交叉路口I2的坐标为(xI2,yI2),车辆节点V1位于路段RS1,源坐标到目的坐标的路径由两个以上的路段构成,路径由坐标二元组集合定义,该坐标二元组集合中的每个坐标二元组定义该路径中所包含的一个路段的条件下,车辆节点V1通过下述过程发现从源坐标(xV1,yV1)途径(xI1,yI1)到目的坐标(xd,yd)的所有路径:
步骤401:开始;
步骤402:车辆节点V1选择一个邻居车辆表项,该邻居车辆表项的坐标距离(xI1,yI1)最近;车辆节点V1构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID;车辆节点V1发送路径消息,该路径消息的源地址为车辆节点V1的车辆地址,目的地址为构建的车辆地址,负载为坐标(xd,yd)以及坐标二元组集合{<(xd,yd),(xI1,yI1)>};
步骤403:判断是否位于坐标(xd,yd)的车辆节点接收到该路径消息,如果是则执行步骤409,否则执行步骤404;
步骤404:如果接收到路径消息的目的车辆节点位于交叉路口,且目的车辆节点的硬件ID与该路径消息的目的地址的硬件ID相同,则执行步骤406,否则执行步骤405;
步骤405:接收到路径消息的车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该路径消息负载中坐标二元组集合的最后一个坐标二元组的第二个元素的距离最近;接收到路径消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID;接收到路径消息的车辆节点将该路径消息的目的地址更新为构建的车辆地址,转发该路径消息,执行步骤403;
步骤406:接收到路径消息的车辆节点查看邻居路段表,判断是否存在一个邻居路段表项,坐标(xd,yd)位于该邻居路段表项的源坐标和目的坐标所标识的路段上,如果是则执行步骤407,否则执行步骤408;
步骤407:接收到路径消息的车辆节点将坐标二元组<(xs,ys),(xd,yd)>加入到该路径消息的坐标二元组集合中并作为该集合中的最后一个坐标二元组,坐标(xs,ys)为该车辆节点位于的交叉路口的坐标,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该路径消息负载中坐标二元组集合的最后一个坐标二元组的第二个元素的距离最近,该车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,该车辆节点将该路径消息的目的地址更新为构建的车辆地址,转发该路径消息,执行步骤403;
步骤408:接收到路径消息的车辆节点查看所有源坐标等于(xs,ys)的邻居路段表项,针对每个选中的邻居路由表项R1,该车辆节点执行下述操作:如果满足条件5,该车辆节点将坐标二元组<(xs,ys),(xR1,yR1)>加入到该路径消息的坐标二元组集合中并作为该集合的最后一个坐标二元组,(xR1,yR1)为邻居路由表项的目的坐标,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该路径消息负载中坐标二元组集合的最后一个坐标二元组的第二个元素距离最近,该车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,将该路径消息的目的地址更新为构建的车辆地址,转发该路径消息,执行步骤403;
条件5:
步骤409:位于坐标(xd,yd)的车辆节点接收到该路径消息后,设置一个坐标二元组集合变量T,变量T的初始值等于该路径消息负载中的坐标二元组集合,选择一个邻居车辆表项,该邻居车辆表项的坐标与变量T的最后一个坐标二元组的第一个元素距离最近,位于坐标(xd,yd)的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,位于坐标(xd,yd)的车辆节点发送一个确认消息,该确认消息的源地址为该车辆节点的车辆地址,目的地址为构建的车辆地址,负载为接收到的路径消息负载中的坐标二元组集合以及变量T;
步骤410:如果车辆节点V1接收到该确认消息,则执行步骤414,否则执行步骤411;
步骤411:如果接收到确认消息的目的车辆节点位于交叉路口,目的车辆节点的硬件ID与该确认消息的目的地址的硬件ID相同,则执行步骤413,否则执行步骤412;
步骤412:接收到确认消息的车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该确认消息负载中变量T中的最后一个坐标二元组的第一个元素的距离最近,接收到确认消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,将该确认消息的目的地址更新为构建的车辆地址,转发该确认消息,执行步骤410;
步骤413:接收到确认消息的车辆节点从该确认消息负载中的变量T中删除最后一个坐标二元组,选择一个邻居车辆表项,该邻居车辆表项的坐标与该确认消息负载中变量T中的最后一个坐标二元组的第一个元素的距离最近,接收到确认消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,将该确认消息的目的地址更新为构建的车辆地址,转发该确认消息,执行步骤410;
步骤414:车辆节点V1接收到确认消息后,保存该确认消息负载中的坐标二元组集合;
步骤415:结束。
车辆节点V1通过上述过程获取了从源坐标(xV1,yV1)途径(xI1,yI1)到目的坐标(xd,yd)的所有路径后,再通过相同的算法获取从源坐标(xV1,yV1)途径(xI2,yI2)到目的坐标(xd,yd)的所有路径。
车辆节点通过上述过程建立到达目的坐标的路由路径,上述过程通过邻居车辆表项来获取邻居车辆节点的实时坐标,并通过实时坐标选择到达目的坐标的下一跳,从而构建到达目的坐标的最优路由路径,由于邻居车辆表项通过生命周期来确保每个邻居车辆节点坐标的实时性,因此,上述过程确保了车辆节点到达目的坐标的路由路径的最优性。
本发明所述方法中,在车辆节点V1的坐标为(xV1,yV1)且硬件ID为HV1,路径P1为源坐标为(xV1,yV1)到达目的坐标(xd,yd)的路径,路径P1由坐标二元组集合S1定义的条件下,车辆节点V1通过下述过程获取路径P1所产生的数据:
步骤501:开始;
步骤502:车辆节点V1设置坐标二元组集合参数TS和TD,参数TS的初始值为空集,参数TD的初始值等于坐标二元组集合S1;车辆节点V1将变量TD中的第一个坐标二元组加入到变量TS中,选择一个邻居车辆表项,该邻居车辆表项的坐标与参数TS中的最后一个坐标二元组的第二个元素的距离最近,然后车辆节点V1构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,车辆节点V1发送一个数据请求消息,该数据请求消息的源地址为车辆节点V1的车辆地址,目的地址为构建的车辆节点,负载为参数TS和参数TD;
步骤503:其他车辆节点接收到数据请求消息后,如果该车辆节点检测到数据D3,数据D3由数据地址DA3唯一标识,数据地址DA3的数据ID为CID3,坐标二元组等于参数TS中的最后一个坐标二元组,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与变量TS中的最后一个坐标二元组的第一个元素距离最近,然后该车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,然后一个数据响应消息,该数据响应消息的源地址为该车辆节点的车辆地址,目的地址为构建的车辆地址,负载为参数TS,数据D3和数据地址DA3;
步骤504:判断是否位于交叉路口的车辆节点接收到数据请求消息,如果是则执行步骤506,否则执行步骤505;
步骤505:接收到数据请求消息的车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该数据请求消息负载中的参数TD中的最后一个坐标二元组的第二个元素距离最近,接收到数据请求消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别为该邻居车辆表项的坐标和硬件ID,将该数据请求消息的目的地址更新为构建的车辆地址,转发该数据请求消息,执行步骤503;
步骤506:接收到数据请求消息的车辆节点从该数据请求消息的参数TD中删除最后一个坐标二元组,如果参数TD为空集,则执行步骤508,否则执行步骤507;
步骤507:接收到数据请求消息的车辆节点将该数据请求消息中的参数TD中的最后一个坐标二元组加到参数TS中并作为参数TS中的最后一个坐标二元组,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该数据请求消息负载中的参数TD中的最后一个坐标二元组的第二个元素距离最近,接收到数据请求消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别为该邻居车辆表项的坐标和硬件ID,将该数据请求消息的目的地址更新为构建的车辆地址,转发该数据请求消息,执行步骤503;
步骤508:如果车辆节点V1接收到数据响应消息,则执行步骤512,否则执行步骤509;
步骤509:如果位于交叉路口的车辆节点接收到数据响应消息,则执行步骤511,否则执行步骤510;
步骤510:接收到数据响应消息的车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该数据响应消息负载中的参数TS中的最后一个坐标二元组的第一个元素距离最近,接收到数据响应消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别为该邻居车辆表项的坐标和硬件ID,将该数据响应消息的目的地址更新为构建的车辆地址,转发该数据响应消息,执行步骤508;
步骤511:接收到数据响应消息的车辆节点删除该数据响应消息中的参数TS中的最后一个坐标二元组,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该数据响应消息负载中的参数TS中的最后一个坐标二元组的第一个元素距离最近,接收到数据响应消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别为该邻居车辆表项的坐标和硬件ID,将该数据响应消息的目的地址更新为构建的车辆地址,转发该数据响应消息,执行步骤508;
步骤512:车辆节点V1接收到该数据响应消息后,保存该数据响应中的数据;
步骤513:结束。
车辆节点V1通过上述过程接收到路径P1的所有数据响应消息后,它可以决定是否通过路径P1到达目的坐标所在的目的地,如果车辆节点V1检测到路径P1发生道路拥塞,那么车辆节点V1则选择另外一条路径并执行上述过程以获取数据响应消息;这样,车辆节点V1可以选择一条最佳路径到达目的地。
有益效果:本发明提供了一种高效的车载网路由方法,所述车载网络通过本发明所提供的通信方法,可保持移动过程中通信的连续性,降低数据包丢失率,从而提高了车载网的服务质量,本发明可应用于道路路况监测、车辆管理等领域,具有广泛的应用前景。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1为本发明所述的发布数据流程示意图。
图2为本发明所述的建立邻居车辆表流程示意图。
图3为本发明所述的获取邻居路段数据流程示意图。
图4为本发明所述的建立路由流程示意图。
图5为本发明所述的获取远程路段流程示意图。
具体实施方式:
本发明提供了一种高效的车载网路由方法,所述车载网络通过本发明所提供的通信方法,可保持移动过程中通信的连续性,降低数据包丢失率,从而提高了车载网的服务质量,本发明可应用于道路路况监测、车辆管理等领域,具有广泛的应用前景。
图1为本发明所述的发布数据流程示意图。所述车载网路包括车辆节点,两个交叉路口之间的道路称为路段,该路段由坐标二元组<源坐标,目的坐标>唯一定义,源坐标和目的坐标分别为定义该路段的两个交叉路口的坐标;所述车载网路覆盖的道路划分为两个以上的路段;
一种类型的数据由一个数据地址唯一标识,一个数据地址由坐标二元组和数据ID构成,坐标二元组唯一定义一个路段,数据ID唯一定义一种数据,例如位于路段RS1的交通事故;
一个交叉路口能够属于两个以上的路段;车辆节点具有定位功能,通过电子地图能够获取每个交叉路口的坐标;如果一个交叉路口属于n个路段,n为大于1的正整数,所述n个路段成为邻居路段;
一个车辆节点维护一个邻居路段表,一个邻居路段表项包含源坐标和目的坐标域;
在路段RS1由交叉路口I1和I2定义,交叉路口I1的坐标为(xI1,yI1),交叉路口I2的坐标为(xI2,yI2),交叉路口I1属于c1个路段,交叉路口I2属于c2个路段,c1和c2为正整数的条件下,位于路段RS1的车辆节点启动后,对于交叉路口I1所属于的每个路段,该车辆节点创建一个邻居路段表项,该邻居路段表项的源坐标为(xI1,yI1),目的坐标为定义该路段的另一个交叉路口的坐标,对于交叉路口I2所属于的每个路段,该车辆节点创建一个邻居路段表项,该邻居路段表项的源坐标为(xI2,yI2),目的坐标为定义该路段的另一个交叉路口的坐标;该车辆节点删除源坐标为(xI1,yI1)且目的坐标为(xI2,yI2)的邻居路段表项以及源坐标为(xI2,yI2)且目的坐标为(xI1,yI1)的邻居路段表项;
一个车辆节点由一个车辆地址唯一标识,一个车辆地址由地理坐标和硬件ID构成,硬件ID可以是MAC地址;
如果一个车辆节点位于一个圆形区域内,该圆形区域的中心坐标为(xI1,yI1)即交叉路口I1,半径为车辆节点的通信半径,则判定该车辆节点位于交叉路口I1;如果车辆节点的坐标为(x,y),如果满足下列条件之一则判定该车辆节点位于路段RS1:
条件1:xI1>xI2且yI1>yI2且xI1≥x≥xI2且yI1≥y≥yI2,
条件2:xI2>xI1且yI1>yI2且xI2≥x≥xI1且yI1≥y≥yI2,
条件3:xI1>xI2且yI2>yI1且xI1≥x≥xI2且yI2≥y≥yI1,
条件4:xI2>xI1且yI2>y1且xI2≥x≥xI1且yI2≥y≥yI1;
如果车辆节点V1的坐标为(xV1,yV1)且硬件ID为HV1,车辆节点V1位于路段RS1,车辆节点V1检测到数据D1,数据D1由数据地址DA1定义,数据地址DA1的坐标二元组为<(xI1,yI1),(xI2,yI2)>,数据ID为CID1,车辆节点V1则执行下述过程发布数据D1:
步骤101:开始;
步骤102:车辆节点V1构建自己的车辆地址,该车辆节点的坐标为(xV1,yV1),硬件ID为HV1,然后车辆节点V1发送一个数据发布消息,该数据发布消息的源地址为车辆节点V1的车辆地址,目的地址为广播地址,广播地址为每个比特位均为1的地址,负载为数据D1和数据地址DA1;
步骤103:其他车辆节点接收到数据发布消息后,保存数据D1和数据地址DA1,如果接收到数据发布消息的其他车辆节点位于交叉路口I1或者交叉路口I2,则执行步骤105,否则执行步骤104;
步骤104:如果接收到数据发布消息的车辆节点位于交叉路口,即除了交叉路口I1或者交叉路口I2以外的交叉路口,则执行步骤106,否则执行步骤105;
步骤105:接收到数据发布消息的车辆节点转发该数据发布消息,执行步骤103;
步骤106:接收到数据发布消息的车辆节点丢弃该数据发布消息;
步骤107:结束。
图2为本发明所述的建立邻居车辆表流程示意图。车辆节点维护一个邻居车辆表,一个邻居车辆表项包含硬件ID域、坐标域和生命周期域;车辆节点V1的硬件ID为HV1,车辆节点V1启动后,定期执行下述过程建立邻居车辆表:
步骤201:开始;
步骤202:车辆节点构建一个车辆地址,该车辆地址的坐标为自己当前的坐标,硬件为HV1,发送一个信标消息,该信标消息的源地址为构建的车辆地址,目的地址为广播地址,负载为空;
步骤203:车辆节点接收到信标消息后,查看邻居车辆表;如果存在一个邻居车辆表项,该邻居车辆表项的硬件ID等于该信标消息的源地址的硬件ID,该车辆节点则将该邻居车辆表项的坐标更新为该信标消息的源地址的坐标,将生命周期设置为最大值,否则,该车辆节点创建一个邻居车辆表项,该邻居车辆表项的硬件ID等于该信标消息的源地址的硬件ID,该邻居车辆表项的坐标等于该信标消息的源地址的坐标,将生命周期设置为最大值;
步骤204:结束。
图3为本发明所述的获取邻居路段数据流程示意图。在车辆节点V1的坐标为(xV1,yV1)且硬件ID为HV1,路段RS1由交叉路口I1和I2定义,交叉路口I1的坐标为(xI1,yI1),交叉路口I2的坐标为(xI2,yI2)的条件下,如果车辆节点V1位于路段RS1,则通过下述过程获取邻居路段的数据:
步骤301:开始;
步骤302:车辆节点V1构建一个车辆地址,该车辆地址的坐标为(xV1,yV1),硬件ID为HV1,车辆节点V1发送请求消息,该请求消息的源地址为该车辆地址,目的地址为广播地址,负载为空;
步骤303:其他车辆节点接收到请求消息后,如果该车辆节点检测到数据D2,数据D2由数据地址DA2标识,数据地址DA2的数据ID为CID2,坐标二元组为定义该车辆节点所在路段的坐标二元组,则执行步骤304,否则执行步骤305;
步骤304:接收到请求消息的车辆节点查看邻居车辆表,如果存在一个邻居车辆表项,该邻居车辆表项的硬件ID等于该请求消息的源地址的硬件ID,该车辆节点则发送一个响应消息,该响应消息的源地址和目的地址均为接收到的请求消息的源地址,负载为数据D2和数据地址DA2;否则,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与接收到的请求消息的源地址的坐标距离最近,该车辆节点构建一个车辆地址,该车辆地址的硬件ID和坐标分为等于该邻居车辆表项的硬件ID和坐标,然后车辆地址发送一个响应消息,该响应消息的源地址为构建的车辆地址,目的地址为接收到的请求消息的源地址,负载为数据D2和数据地址DA2;
步骤305:如果接收到请求消息的车辆节点位于交叉路口I1或者交叉路口I2,则执行步骤307,否则执行步骤306;
步骤306:如果接收到请求消息的车辆节点位于交叉路口,即除了交叉路口I1或者交叉路口I2以外的交叉路口,则执行步骤308,否则执行步骤307;
步骤307:接收到请求消息的车辆节点转发该请求消息,执行步骤303;
步骤308:接收到请求消息的车辆节点丢弃该请求消息;
步骤309:判断是否车辆节点V1接收到响应消息,如果是则执行步骤313,否则执行步骤310;
步骤310:判断接收到响应消息的车辆节点的硬件ID是否等于该响应消息的源地址的硬件ID,则执行步骤312,否则执行步骤311;
步骤311:接收到响应消息的车辆节点丢弃该响应消息,执行步骤313;
步骤312:接收到响应消息的车辆节点查看邻居车辆表,如果存在一个邻居车辆表项,该邻居车辆表项的硬件ID等于该响应消息的目的地址的硬件ID,该车辆节点则构建一个车辆地址,该车辆节点的硬件ID和坐标分别等于该邻居车辆表项的硬件ID和坐标,将该响应消息的源地址和目的地址均更新为构建的车辆地址,转发该响应消息;否则,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与接收到的响应消息的目的地址的坐标距离最近,该车辆节点构建一个车辆地址,该车辆地址的硬件ID和坐标分为等于该邻居车辆表项的硬件ID和坐标,将该响应消息的源地址更新为构建的车辆地址,转发该响应消息;执行步骤309;
步骤313:车辆节点V1接收到响应消息后,保存该响应消息中的数据;
步骤314:结束。
图4为本发明所述的建立路由流程示意图。在车辆节点V1的坐标为(xV1,yV1)且硬件ID为HV1,路段RS1由交叉路口I1和I2定义,交叉路口I1的坐标为(xI1,yI1),交叉路口I2的坐标为(xI2,yI2),车辆节点V1位于路段RS1,源坐标到目的坐标的路径由两个以上的路段构成,路径由坐标二元组集合定义,该坐标二元组集合中的每个坐标二元组定义该路径中所包含的一个路段的条件下,车辆节点V1通过下述过程发现从源坐标(xV1,yV1)途径(xI1,yI1)到目的坐标(xd,yd)的所有路径:
步骤401:开始;
步骤402:车辆节点V1选择一个邻居车辆表项,该邻居车辆表项的坐标距离(xI1,yI1)最近;车辆节点V1构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID;车辆节点V1发送路径消息,该路径消息的源地址为车辆节点V1的车辆地址,目的地址为构建的车辆地址,负载为坐标(xd,yd)以及坐标二元组集合{<(xd,yd),(xI1,yI1)>};
步骤403:判断是否位于坐标(xd,yd)的车辆节点接收到该路径消息,如果是则执行步骤409,否则执行步骤404;
步骤404:如果接收到路径消息的目的车辆节点位于交叉路口,且目的车辆节点的硬件ID与该路径消息的目的地址的硬件ID相同,则执行步骤406,否则执行步骤405;
步骤405:接收到路径消息的车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该路径消息负载中坐标二元组集合的最后一个坐标二元组的第二个元素的距离最近;接收到路径消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID;接收到路径消息的车辆节点将该路径消息的目的地址更新为构建的车辆地址,转发该路径消息,执行步骤403;
步骤406:接收到路径消息的车辆节点查看邻居路段表,判断是否存在一个邻居路段表项,坐标(xd,yd)位于该邻居路段表项的源坐标和目的坐标所标识的路段上,如果是则执行步骤407,否则执行步骤408;
步骤407:接收到路径消息的车辆节点将坐标二元组<(xs,ys),(xd,yd)>加入到该路径消息的坐标二元组集合中并作为该集合中的最后一个坐标二元组,坐标(xs,ys)为该车辆节点位于的交叉路口的坐标,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该路径消息负载中坐标二元组集合的最后一个坐标二元组的第二个元素的距离最近,该车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,该车辆节点将该路径消息的目的地址更新为构建的车辆地址,转发该路径消息,执行步骤403;
步骤408:接收到路径消息的车辆节点查看所有源坐标等于(xs,ys)的邻居路段表项,针对每个选中的邻居路由表项R1,该车辆节点执行下述操作:如果满足条件5,该车辆节点将坐标二元组<(xs,ys),(xR1,yR1)>加入到该路径消息的坐标二元组集合中并作为该集合的最后一个坐标二元组,(xR1,yR1)为邻居路由表项的目的坐标,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该路径消息负载中坐标二元组集合的最后一个坐标二元组的第二个元素距离最近,该车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,将该路径消息的目的地址更新为构建的车辆地址,转发该路径消息,执行步骤403;
条件5:
步骤409:位于坐标(xd,yd)的车辆节点接收到该路径消息后,设置一个坐标二元组集合变量T,变量T的初始值等于该路径消息负载中的坐标二元组集合,选择一个邻居车辆表项,该邻居车辆表项的坐标与变量T的最后一个坐标二元组的第一个元素距离最近,位于坐标(xd,yd)的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,位于坐标(xd,yd)的车辆节点发送一个确认消息,该确认消息的源地址为该车辆节点的车辆地址,目的地址为构建的车辆地址,负载为接收到的路径消息负载中的坐标二元组集合以及变量T;
步骤410:如果车辆节点V1接收到该确认消息,则执行步骤414,否则执行步骤411;
步骤411:如果接收到确认消息的目的车辆节点位于交叉路口,目的车辆节点的硬件ID与该确认消息的目的地址的硬件ID相同,则执行步骤413,否则执行步骤412;
步骤412:接收到确认消息的车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该确认消息负载中变量T中的最后一个坐标二元组的第一个元素的距离最近,接收到确认消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,将该确认消息的目的地址更新为构建的车辆地址,转发该确认消息,执行步骤410;
步骤413:接收到确认消息的车辆节点从该确认消息负载中的变量T中删除最后一个坐标二元组,选择一个邻居车辆表项,该邻居车辆表项的坐标与该确认消息负载中变量T中的最后一个坐标二元组的第一个元素的距离最近,接收到确认消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,将该确认消息的目的地址更新为构建的车辆地址,转发该确认消息,执行步骤410;
步骤414:车辆节点V1接收到确认消息后,保存该确认消息负载中的坐标二元组集合;
步骤415:结束。
车辆节点V1通过上述过程获取了从源坐标(xV1,yV1)途径(xI1,yI1)到目的坐标(xd,yd)的所有路径后,再通过相同的算法获取从源坐标(xV1,yV1)途径(xI2,yI2)到目的坐标(xd,yd)的所有路径。
图5为本发明所述的获取远程路段流程示意图。在车辆节点V1的坐标为(xV1,yV1)且硬件ID为HV1,路径P1为源坐标为(xV1,yV1)到达目的坐标(xd,yd)的路径,路径P1由坐标二元组集合S1定义的条件下,车辆节点V1通过下述过程获取路径P1所产生的数据:
步骤501:开始;
步骤502:车辆节点V1设置坐标二元组集合参数TS和TD,参数TS的初始值为空集,参数TD的初始值等于坐标二元组集合S1;车辆节点V1将变量TD中的第一个坐标二元组加入到变量TS中,选择一个邻居车辆表项,该邻居车辆表项的坐标与参数TS中的最后一个坐标二元组的第二个元素的距离最近,然后车辆节点V1构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,车辆节点V1发送一个数据请求消息,该数据请求消息的源地址为车辆节点V1的车辆地址,目的地址为构建的车辆节点,负载为参数TS和参数TD;
步骤503:其他车辆节点接收到数据请求消息后,如果该车辆节点检测到数据D3,数据D3由数据地址DA3唯一标识,数据地址DA3的数据ID为CID3,坐标二元组等于参数TS中的最后一个坐标二元组,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与变量TS中的最后一个坐标二元组的第一个元素距离最近,然后该车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别等于该邻居车辆表项的坐标和硬件ID,然后一个数据响应消息,该数据响应消息的源地址为该车辆节点的车辆地址,目的地址为构建的车辆地址,负载为参数TS,数据D3和数据地址DA3;
步骤504:判断是否位于交叉路口的车辆节点接收到数据请求消息,如果是则执行步骤506,否则执行步骤505;
步骤505:接收到数据请求消息的车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该数据请求消息负载中的参数TD中的最后一个坐标二元组的第二个元素距离最近,接收到数据请求消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别为该邻居车辆表项的坐标和硬件ID,将该数据请求消息的目的地址更新为构建的车辆地址,转发该数据请求消息,执行步骤503;
步骤506:接收到数据请求消息的车辆节点从该数据请求消息的参数TD中删除最后一个坐标二元组,如果参数TD为空集,则执行步骤508,否则执行步骤507;
步骤507:接收到数据请求消息的车辆节点将该数据请求消息中的参数TD中的最后一个坐标二元组加到参数TS中并作为参数TS中的最后一个坐标二元组,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该数据请求消息负载中的参数TD中的最后一个坐标二元组的第二个元素距离最近,接收到数据请求消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别为该邻居车辆表项的坐标和硬件ID,将该数据请求消息的目的地址更新为构建的车辆地址,转发该数据请求消息,执行步骤503;
步骤508:如果车辆节点V1接收到数据响应消息,则执行步骤512,否则执行步骤509;
步骤509:如果位于交叉路口的车辆节点接收到数据响应消息,则执行步骤511,否则执行步骤510;
步骤510:接收到数据响应消息的车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该数据响应消息负载中的参数TS中的最后一个坐标二元组的第一个元素距离最近,接收到数据响应消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别为该邻居车辆表项的坐标和硬件ID,将该数据响应消息的目的地址更新为构建的车辆地址,转发该数据响应消息,执行步骤508;
步骤511:接收到数据响应消息的车辆节点删除该数据响应消息中的参数TS中的最后一个坐标二元组,该车辆节点选择一个邻居车辆表项,该邻居车辆表项的坐标与该数据响应消息负载中的参数TS中的最后一个坐标二元组的第一个元素距离最近,接收到数据响应消息的车辆节点构建一个车辆地址,该车辆地址的坐标和硬件ID分别为该邻居车辆表项的坐标和硬件ID,将该数据响应消息的目的地址更新为构建的车辆地址,转发该数据响应消息,执行步骤508;
步骤512:车辆节点V1接收到该数据响应消息后,保存该数据响应中的数据;
步骤513:结束。
车辆节点V1接收到路径P1的所有数据响应消息后,它可以决定是否通过路径P1到达目的坐标所在的目的地,如果不选择路径P1,那么车辆节点V1则选择另外一条路径并执行上述过程以获取数据响应消息;这样,车辆节点V1可以选择一条最佳路径到达目的地。
综上所述,本发明提供了一种高效的车载网路由方法,所述车载网络通过本发明所提供的通信方法,可保持移动过程中通信的连续性,降低数据包丢失率,从而提高了车载网的服务质量,本发明可应用于道路路况监测、车辆管理等领域,具有广泛的应用前景。
实施例1
基于表1的仿真参数,本实施例模拟了本发明中的一种高效的车载网路由方法,性能分析如下:当车辆节点获取邻居路段的数据时,数据通信延迟较短,当车辆节点获取远程路段的数据时,数据通信延迟较长,数据获取平均延迟为1.1s。
表1仿真参数
本发明提供了一种高效的车载网路由方法的思路,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部份均可用现有技术加以实现。
一种高效的车载网路由方法专利购买费用说明
Q:办理专利转让的流程及所需资料
A:专利权人变更需要办理著录项目变更手续,有代理机构的,变更手续应当由代理机构办理。
1:专利变更应当使用专利局统一制作的“著录项目变更申报书”提出。
2:按规定缴纳著录项目变更手续费。
3:同时提交相关证明文件原件。
4:专利权转移的,变更后的专利权人委托新专利代理机构的,应当提交变更后的全体专利申请人签字或者盖章的委托书。
Q:专利著录项目变更费用如何缴交
A:(1)直接到国家知识产权局受理大厅收费窗口缴纳,(2)通过代办处缴纳,(3)通过邮局或者银行汇款,更多缴纳方式
Q:专利转让变更,多久能出结果
A:著录项目变更请求书递交后,一般1-2个月左右就会收到通知,国家知识产权局会下达《转让手续合格通知书》。
动态评分
0.0