1.一种智能车载传感网的实现方法,其特征在于,所述车载传感网包括接入节点和车辆节点;车辆节点内包含两种以上的传感器,能够采集车辆本身以及外界的数据;接入节点位于交叉路口,两个交叉路口之间的道路称为路段,路段由位于两个交叉路口的接入节点标识;一个接入节点以及与该接入节点所在交叉路口相连的路段上行使的所有车辆构成一个簇,该接入节点为簇首节点,车辆节点称为簇成员,簇覆盖的面积范围为与簇首节点相连的所有路段;一个路段上行使的车辆节点同时属于定义该路段的接入节点所在簇的簇成员;接入节点之间能够彼此通信,一个接入节点只属于一个簇;
一个接入节点的地理坐标与其他接入节点的地理坐标不同;
接入节点和车辆节点由i比特的地址唯一标识,该地址为当前的地理坐标值;如果地址值为2i-1,则该地址为广播地址;
一种与地理位置有关的数据由一个二元组<数据名称,地理坐标>唯一标识,其中数据名称定义数据类型,地理坐标定义该数据发生的具体地理位置;
车辆节点产生数据后,执行数据发布操作,数据发布根据数据类型的不同分为簇内发布操作和簇间发布操作;
数据发布通过六元组<发布标识,数据名称,数据地理坐标,数据值,接入节点A1的地理坐标,接入节点A2的地理坐标>来实现,其中发布标识为0时,执行簇内发布,发布标识为1时,执行簇间发布;数据名称和数据地理坐标唯一标识一种与地理位置相关的数据,数据值为数据名称和数据地理坐标定义的数据,接入节点A1和接入节点A2的地理坐标定义发送该六元组的车辆节点所在的路段;如果接入节点发送该六元组,那么接入节点A1的地理坐标为该接入节点的地理坐标,接入节点A2的地理坐标为0;
车辆节点定期发送信标消息;
接入节点具有两个接口,一个接口用于与邻居车辆节点进行通信,一个接口用于与邻居接入节点进行通信;接入节点的每个接口定期发送信标消息;
在车辆节点V2的当前地理坐标为(xv2,yv2),位于路段RS1上,路段RS1由接入节点AP1和接入节点AP2定义,接入节点AP1的地理坐标为(xAP1,yAP1),接入节点AP2的地理坐标为(xAP2,yAP2),车辆节点V2属于簇E1和簇E2,簇E1的簇首节点为接入节点AP1,簇E2的簇首节点为接入节点AP2;数据C2由二元组
步骤102:车辆节点V2构建六元组<发布标识为0,数据名称CN2,数据地理坐标(xv2,yv2),数据值C2,接入节点AP1的地理坐标(xAP1,yAP1),接入节点AP2的地理坐标(xAP2,yAP2)>,在下一个要发送的信标消息中,负载为构建的六元组,源地址为自己的地址(xv2,yv2),目的地址为广播地址,在发送下一个信标消息后,执行步骤103;
步骤103:如果不属于簇E1也不属于簇E2的车辆节点接收到符合条件1的信标消息后,则执行步骤104,否则执行步骤105;
条件1:信标消息负载的六元组的数据地理坐标位于路段RS1上;
步骤104:接收到信标消息的车辆节点丢弃该信标消息,执行步骤108;
步骤105:接收到信标消息的车辆节点或者接入节点AP1或者接入节点AP2执行下述操作:保存在时间T内接收到的所有信标消息以及邻居车辆节点或者接入节点的地理坐标,其中T为在发送前一个信标消息与下一个信标消息之间的间隔;针对接收到的信标消息中的六元组中发布标识为0的六元组执行并操作,保存执行并操作之后的六元组并集;查看六元组并集中的每个六元组,如果自己与六元组中的数据地理坐标的距离小于发送负载为该六元组的信标帧的源车辆节点或者源接入节点与六元组中的数据地理坐标的距离,则从该六元组并集中删除该六元组;
步骤106:如果六元组集合为空,则执行步骤108,否则执行步骤107;
步骤107:接收到信标消息的车辆节点或者接入节点AP1或者接入节点AP2查看六元组并集中的每个六元组,如果车辆节点接收到信标消息,则将该六元组的接入节点A1的地理坐标和接入节点A2的地理坐标更新为定义该车辆节点所在路段的两个接入节点的地理坐标,如果接入节点AP1或者接入节点AP2接收到信标消息,则将该六元组的接入节点A1的地理坐标更新为接入节点AP1或者接入节点AP2的地理坐标,接入节点A2的地理坐标更新为0;
在收到信标消息的车辆节点的下一个要发送的信标消息中,负载为六元组并集,源地址为自己的地址,目的地址为广播地址,在接入节点AP1或者接入节点AP2与车辆节点通信的接口要发送的下一个信标消息中,负载为六元组并集,源地址为自己的地址,目的地址为广播地址,接入节点AP1或者接入节点AP2通过与车辆节点通信的接口发送下一个信标消息后,执行步骤103;
步骤108:结束。
2.根据权利要求1所述的一种智能车载传感网的实现方法,其特征在于,在车辆节点V2的当前地理坐标为(xv2,yv2),位于路段RS1上,路段RS1由接入节点AP1和接入节点AP2定义,接入节点AP1的地理坐标(xAP1,yAP1),接入节点AP2的地理坐标(xAP2,yAP2),车辆节点V2属于簇E1和簇E2,簇E1的簇首节点为接入节点AP1,簇E2的簇首节点为接入节点AP2;数据C3由二元组
步骤202:车辆节点V2构建六元组<发布标识为1,数据名称CN3,数据地理坐标(xv2,yv2),数据值C3,接入节点AP1的地理坐标(xAP1,yAP1),接入节点AP2的地理坐标(xAP2,yAP2)>,在下一个要发送的信标消息中,负载为构建的六元组,源地址为自己的地址(xv2,yv2),目的地址为广播地址,在发送下一个信标消息后,执行步骤203;
步骤203:如果位于路段RS1的车辆节点接收到信标消息后,则执行步骤204,否则执行步骤207;
步骤204:接收到信标消息的车辆节点执行下述操作:保存在时间T内接收到的所有信标消息以及邻居车辆节点或者接入节点的地理坐标,其中T为在发送前一个信标消息与下一个信标消息之间的间隔;针对接收到的信标消息中的六元组中发布标识为1的六元组执行并操作,保存执行并操作之后的六元组并集;查看六元组并集中的每个数据地理坐标位于路段RS1的六元组,如果自己与接入节点AP1的距离小于六元组中的数据地理坐标与接入节点AP1的距离但是大于发送负载为该六元组的信标帧的源车辆节点或者源接入节点与接入节点AP1的距离,则从该六元组并集中删除该六元组,如果自己与接入节点AP2的距离小于六元组中的数据地理坐标与接入节点AP2的距离但是大于发送负载为该六元组的信标帧的源车辆节点或者源接入节点与接入节点AP2的距离,则从该六元组并集中删除该六元组,如果车辆节点的当前坐标与六元组中的数据地理坐标相同,则从该六元组并集中删除该六元组;
步骤205:如果六元组集合为空,则执行步骤219,否则执行步骤206;
步骤206:在收到信标消息的车辆节点的下一个要发送的信标消息中,负载为六元组并集,源地址为自己的当前地址,目的地址为广播地址,在发送下一个信标消息后,执行步骤
203;
步骤207:如果接入节点AP1或者接入节点AP2接收到信标消息后,则执行步骤208,否则执行步骤210;
步骤208:接入节点AP1或者接入节点AP2执行下述操作:保存在时间T内接收到的所有信标消息以及邻居车辆节点或者接入节点的地理坐标,其中T为在发送前一个信标消息与下一个信标消息之间的间隔;针对接收到的信标消息中的六元组中发布标识为1的六元组执行并操作,保存执行并操作之后的六元组并集;查看六元组并集中的每个六元组,如果该六元组中的数据地理坐标不在自己所在簇覆盖的面积范围内同时也不在邻居接入节点所在簇覆盖的面积范围内,则从六元组集合中删除该六元组;如果六元组集合为空,则执行步骤219,否则执行步骤209;
步骤209:接收到信标消息的接入节点AP1或者接入节点AP2查看六元组并集中的每个六元组,将该六元组的接入节点A1的地理坐标更新为接入节点AP1或者接入节点AP2的地理坐标,接入节点A2的地理坐标更新为0;在收到信标消息的接入节点AP1或者接入节点AP2与接入节点通信的接口准备发送的下一个信标消息中,负载为六元组并集,源地址为自己的当前地址,目的地址为广播地址,在接入节点AP1或者接入节点AP2通过与接入节点通信的接口发送下一个信标消息后,执行步骤210;
步骤210:如果接入节点AP1或者接入节点AP2的邻居接入节点接收到信标消息后,执行步骤212,否则执行步骤211;
步骤211:接收到信标消息的车辆节点或者接入节点保存该信标消息的源地址,执行步骤219;
步骤212:邻居接入节点执行下述操作:保存在时间T内接收到的所有信标消息以及邻居车辆节点或者接入节点的地理坐标,其中T为在发送前一个信标消息与下一个信标消息之间的间隔;针对接收到的信标消息中的六元组中发布标识为1的六元组执行并操作,保存执行并操作之后的六元组并集;查看六元组并集中的每个六元组,如果该六元组中的数据地理坐标不属于自己所在簇覆盖的面积范围内也不在邻居接入节点所在簇覆盖的面积范围内,则从六元组集合中删除该六元组;如果六元组集合为空,则执行步骤219,否则执行步骤213;
步骤213:接收到信标消息的邻居接入节点查看六元组并集中的每个六元组,将该六元组的接入节点A1的地理坐标更新为自己的地理坐标,接入节点A2的地理坐标更新为0;在收到信标消息的邻居接入节点准备从与车辆节点通信的接口发送的下一个信标消息中,负载为六元组并集,源地址为自己的当前地址,目的地址为广播地址,在邻居接入节点通过与车辆节点通信的接口发送下一个信标消息后,执行步骤214;
步骤214:如果接收到信标消息的车辆节点符合条件2或者条件3,则执行步骤216,否则执行步骤215;
条件2:车辆节点属于信标消息的负载六元组中的接入节点A1所在的簇;
条件3:车辆节点第一次收到信标消息中的六元组;
步骤215:接收到信标消息的车辆节点保存该信标消息的源地址,执行步骤219;
步骤216:接收到信标消息的车辆节点执行下述操作:保存在时间T内接收到的所有信标消息以及邻居车辆节点或者接入节点的地理坐标,其中T为在发送前一个信标消息与下一个信标消息之间的间隔;针对接收到的信标消息中的六元组中发布标识为1的六元组执行并操作,保存执行并操作之后的六元组并集;查看六元组并集中的每个六元组,如果自己与六元组中的接入节点A1的地理坐标的距离小于发送负载为该六元组的信标帧的源车辆节点或者源接入节点与接入节点A1的地理坐标的距离,则从该六元组并集中删除该六元组;
步骤217:如果六元组集合为空,则执行步骤219,否则执行步骤218;
步骤218:在收到信标消息的车辆节点的下一个准备发送的信标消息中,负载为六元组并集,源地址为自己的地址,目的地址为广播地址,在发送下一个信标消息后,执行步骤
214;
步骤219:结束。
3.根据权利要求2所述的一种智能车载传感网的实现方法,其特征在于,在车辆节点V1的当前地理坐标为(xv1,yv1),位于路段RS1上,路段RS1由接入节点AP1和接入节点AP2定义,接入节点AP1的地理坐标(xAP1,yAP1),接入节点AP2的地理坐标(xAP2,yAP2),车辆节点V1属于簇E1和簇E2,簇E1的簇首节点为接入节点AP1,簇E2的簇首节点为接入节点AP2;数据C1由二元组
步骤302:车辆节点V1构建一个请求消息,请求消息的源地址为(xv1,yv1),目的地址为(x1,y1),负载为CN1,然后将请求应消息转发到距离目的地址最近的邻居车辆节点或者接入节点;
步骤303:如果位于地理坐标(x1,y1)的车辆节点接收到请求消息,则执行步骤304,否则执行步骤305;
步骤304:如果车辆节点没有数据C1,则创建数据C1;车辆节点发送一个响应消息,该响应消息的负载为数据C1,目的地址为请求消息中的源地址,源地址为请求消息中的目的地址,执行步骤308;
步骤305:如果车辆节点或者接入节点AP1接收到请求消息且不能提供数据C1,则执行步骤306,否则执行步骤307;
步骤306:车辆节点或者接入节点AP1将请求消息转发到距离目的地址最近的邻居车辆节点或者接入节点,执行步骤303;
步骤307:车辆节点或者接入节点AP1构建一个响应消息,该响应消息的负载为数据C1,目的地址为请求消息中的源地址,源地址为请求消息中的目的地址,然后将该响应消息转发到距离目的地址最近的邻居车辆节点或者接入节点;
步骤308:如果位于地理坐标(xv1,yv1)的车辆节点接收到响应消息,则执行步骤310,否则执行步骤309;
步骤309:接收到响应消息的车辆节点或者接入节点AP1将响应消息转发到距离目的地址最近的邻居车辆节点或者接入节点,执行步骤308;
步骤310:位于地理坐标(xv1,yv1)的车辆节点如果发送了请求数据C1的请求消息或者想获取数据C1,则保存数据C1;
步骤311:车辆节点V1获取了数据C1;
步骤312:结束。
4.根据权利要求2所述的一种智能车载传感网的实现方法,其特征在于,在车辆节点V1的当前地理坐标为(xv1,yv1),位于路段RS1上,路段RS1由接入节点AP1和接入节点AP2定义,接入节点AP1的地理坐标(xAP1,yAP1),接入节点AP2的地理坐标(xAP2,yAP2),车辆节点V1属于簇E1和簇E2,簇E1的簇首节点为接入节点AP1,簇E2的簇首节点为接入节点AP2;数据C4由二元组
步骤402:车辆节点V1构建一个请求消息,请求消息的源地址为(xv1,yv1),目的地址为(x4,y4),负载为CN4,然后将请求消息转发到距离接入节点AP1最近的邻居车辆节点或者接入节点;
步骤403:如果位于簇E1的车辆节点接收到请求消息且不能提供数据C4,则执行步骤
404,否则执行步骤405;
步骤404:车辆节点将请求消息转发到距离接入节点AP1最近的邻居车辆节点或者接入节点,执行步骤403;
步骤405:如果位于簇E1的车辆节点接收到请求消息且能提供数据C4,则执行步骤406,否则执行步骤407;
步骤406:车辆节点构建一个响应消息,该响应消息的负载为数据C4,目的地址为请求消息中的源地址,源地址为请求消息中的目的地址,然后将该响应消息转发到距离目的地址最近的邻居车辆节点或者接入节点,执行步骤416;
步骤407:接入节点接收到请求消息且能提供数据C4,则执行步骤408,否则执行步骤
409:
步骤408:如果接收到请求消息的接入节点为接入节点AP1或者为接入节点AP2,则构建一个响应消息,该响应消息的负载为数据C4,目的地址为请求消息中的源地址,源地址为请求消息中的目的地址,然后从与车辆节点通信的接口将该响应消息转发到距离目的地址最近的邻居车辆节点;否则接入节点构建一个响应消息,该响应消息的负载为数据C4,目的地址为请求消息中的源地址,源地址为请求消息中的目的地址,然后从与接入节点通信的接口将该响应消息转发到距离目的地址最近的邻居接入节点;执行步骤416;
步骤409:接入节点接收到请求消息且不能提供数据C4,则执行步骤410,否则执行步骤
411:
步骤410:如果接收到请求消息的接入节点为接入节点AP4,则从与车辆节点通信的接口将该请求消息转发到距离目的地址最近的邻居车辆节点;否则接入节点从与接入节点通信的接口将该请求消息转发到距离目的地址最近的邻居接入节点;执行步骤403;
步骤411:如果位于簇E4的车辆节点接收到请求消息且不能提供数据C4,则执行步骤
412,否则执行步骤413;
步骤412:位于E4的车辆节点将接收到的请求消息转发到距离目的地址最近的邻居车辆节点或者邻居接入节点,执行步骤403;
步骤413:如果位于簇E4的车辆节点接收到请求消息且能提供数据C4,则执行步骤414,否则执行步骤415;
步骤414:车辆节点构建一个响应消息,该响应消息的负载为数据C4,目的地址为请求消息中的源地址,源地址为请求消息中的目的地址,然后该响应消息转发到距离接入节点AP4最近的邻居车辆节点或者邻居接入节点,执行步骤416;
步骤415:位于地理坐标(x4,y4)的车辆节点接收到请求消息后,如果车辆节点没有数据C4,则创建数据C4;车辆节点发送一个响应消息,该响应消息的负载为数据C4,目的地址为请求消息中的源地址,源地址为请求消息中的目的地址,然后该响应消息转发到距离接入节点AP4最近的邻居车辆节点或者邻居接入节点;
步骤416:如果位于地理坐标(xv1,yv1)的车辆节点接收到响应消息,则执行步骤423,否则执行步骤417;
步骤417:如果位于簇E1的车辆节点接收到响应消息,则执行步骤418,否则执行步骤
419;
步骤418:车辆节点将接收到的响应消息转发到距离目的地址最近的邻居车辆节点或者接入节点,执行步骤416;
步骤419:如果位于簇E4的车辆节点接收到响应消息,则执行步骤420,否则执行步骤
421;
步骤420:车辆节点将接收到的响应消息转发到距离接入节点AP4的邻居车辆节点或者接入节点,执行步骤416;
步骤421:如果接入节点接收到响应消息,则执行步骤422,否则执行步骤423;
步骤422:如果接收到请求消息的接入节点为接入节点AP1或者接入节点AP2,则从与车辆节点通信的接口将该响应消息转发到距离目的地址最近的邻居车辆节点;否则接入节点从与接入节点通信的接口将该响应消息转发到距离目的地址最近的邻居接入节点;执行步骤416;
步骤423:位于地理坐标(xv1,yv1)的车辆节点如果发送了请求数据C4的请求消息或者想获取数据C4,则保存数据C4;
步骤424:车辆节点V1获取了数据C4;
步骤425:结束。