1.一种车载传感网的实现方法,其特征在于,所述传感网包括传感节点和车辆节点;传感节点均匀分布于道路两侧,用于采集数据;车辆节点能够获取传感节点感知的数据并保存和提供所述数据;
一种类型的数据由名称和属性标识,属性包括时间戳和坐标,时间戳为数据产生的时间,坐标为数据产生的地理坐标;
每个车辆节点保存一个数据表,每个数据表项包含名称域、时间戳域、坐标域和数据域;
如果一个传感节点有N个邻居车辆节点,那么第j个邻居车辆节点使用公式(1)计算等待时间Bj,j取值1~N,公式(1)中,T2为预先设置的常量时间,R为通信半径,dj为第j个邻居车辆节点与该传感节点之间的距离;
Bj=T2·(1-dj/R) 公式(1)
一个传感节点产生数据后,采用发布消息来发布该数据;
发布消息包含消息类型、名称域、时间戳域、坐标域、数据域、跳数域和负载域,发布消息的消息类型值为1;
数据C1由名称NA1和属性A1标识,属性A1中的时间戳为T1,坐标为(x1,y1);如果传感节点SN1产生数据C1,则执行下述操作发布该数据:步骤101:开始;
步骤102:传感节点SN1发送一个发布消息,该发布消息的消息类型为1,名称域为NA1,时间戳域为T1,坐标域为(x1,y1),数据域值为数据C1,跳数域值为预先设置值H1,H1为正整数,负载域值为随机数和传感节点SN1的坐标;
步骤103:判断是否除传感节点SN1以外的其他传感节点接收到该发布消息,是则执行步骤104,否则执行步骤105;
步骤104:接收到该发布消息的传感节点丢弃该发布消息,执行步骤109;
步骤105:接收到该发布消息的车辆节点保存该发布消息,创建一个数据表项,该数据表项的名称域值,时间戳域值,坐标域值和数据域值分别等于该发布消息的名称域值,时间戳域值,坐标域值和数据域值;该车辆节点将该发布消息的跳数域值递减1,判断该发布消息的跳数域值是否等于0,是则执行步骤109;否则执行步骤106;
步骤106:接收到该发布消息的车辆节点根据公式(1)计算自己的等待时间;如果在等待时间内,该车辆节点接收到一个发布消息,该发布消息与自己保存的一个发布消息具有相同的名称域值,时间戳域值,坐标域值,数据域值,跳数域值同时发布消息负载中的随机数也相同,则执行步骤108,否则执行步骤107;
步骤107:接收到该发布消息的车辆节点将该发布消息负载中的坐标域值更新为自己的坐标,转发该发布消息,执行步骤103;
步骤108:接收到该发布消息的车辆节点选择保存的一个发布消息,该发布消息与在等待时间内接收到的发布消息具有相同的名称域值,时间戳域值,坐标域值,数据域值,跳数域值,且负载中的随机数也相同,删除该保存的发布消息,执行步骤103;
步骤109:结束。
2.根据权利要求1所述的一种车载传感网的实现方法,其特征在于,能够提供一种数据的传感节点或者车辆节点称为提供者;
如果车辆节点需要获取数据C1且有N1个邻居传感节点和车辆节点能够提供数据C1,则第i个邻居提供者使用公式(2)计算等待时间Bi,i取值1~N1;公式(2)中,di为第i个提供者与该车辆节点之间的距离;
Bi=T2·di/R 公式(2)
车辆节点使用请求消息和响应消息获取数据;请求消息包含消息类型域、名称域、时间戳域、坐标域、跳数域和负载域,请求消息的消息类型域值为2;
响应消息包含消息类型域、名称域、时间戳域、坐标域、跳数域、数据域和负载域,响应消息消息类型域值为3;
数据C1由名称NA1和属性A1标识,属性A1中的时间戳为T1,坐标为(x1,y1);如果车辆节点VN1需要获取数据C1,坐标(x1,y1)不在车辆节点VN1的一跳范围内,且车辆节点VN1至少有一个邻居车辆节点能够提供数据C1,则车辆节点VN1通过下述过程获取数据C1:步骤201:开始;
步骤202:车辆节点VN1等待时间TS1,时间TS1为预先设置值,如果在时间TS1内,车辆节点VN1接收到一个请求消息,该请求消息的名称域值为NA1,时间戳为T1,坐标为(x1,y1),则执行步骤211,否则执行步骤203;
步骤203:车辆节点VN1发送请求消息,该请求消息的消息类型为2,名称域值为NA1,时间戳为T1,坐标为(x1,y1),跳数值为1,负载为一个随机数和车辆节点VN1的坐标;
步骤204:判断是否传感节点接收到该请求消息,是则执行步骤205,否则执行步骤206;
步骤205:接收到该请求消息的传感节点丢弃该请求消息,执行步骤211;
步骤206:接收到该请求消息的车辆节点将该请求消息的跳数域值递减1;如果该车辆节点能够提供该请求消息的名称域值,时间戳域值和坐标域值标识的数据,则根据公式(2)计算等待时间,否则该车辆节点将等待时间设置为T2;如果该车辆节点能够提供该请求消息的名称域值,时间戳域值和坐标域值标识的数据且在等待时间内没有接收到名称域值,时间戳域值和坐标域值等于该请求消息的名称域值,时间戳域值和坐标域值的响应消息,则执行步骤207,否则执行步骤208;
步骤207:接收到该请求消息的车辆节点发送响应消息,该响应消息的消息类型为3,名称域值,时间戳域值和坐标域值分别等于该请求消息的名称域值,时间戳域值和坐标域值,跳数域值等于1,数据域值等于该请求消息中名称域值,时间戳域值和坐标域值所标识的数据,负载域值包括该请求消息负载中的随机数和该车辆节点的坐标值,执行步骤211;
步骤208:如果接收到该请求消息的车辆节点不能提供该请求消息的名称域值,时间戳域值和坐标域值标识的数据且在等待时间内没有接收到名称域值,时间戳域值和坐标域值等于该请求消息的名称域值,时间戳域值和坐标域值的响应消息,则执行步骤209,否则执行步骤211;
步骤209:接收到该请求消息的车辆节点查看该请求消息的跳数域值;判断该跳数域值是否等于0,是则执行步骤211,否则执行步骤210;
步骤210:接收到该请求消息的车辆节点将该请求消息中的坐标更新为自己的坐标,转发该请求消息,执行步骤204;
步骤211:判断是否传感节点接收到该响应消息,是则执行步骤212,否则执行步骤213;
步骤212:接收到该响应消息的传感节点丢弃该响应消息,执行步骤217;
步骤213:接收到该响应消息的车辆节点保存该响应消息,创建一个数据表项,该数据表项的名称域值,时间戳域值,坐标域值和数据域值分别等于该响应消息的名称域值,时间戳域值,坐标域值和数据域值;该车辆节点将该响应消息的跳数域值递减1,如果该响应消息的跳数域值等于0,则执行步骤217;否则执行步骤214;
步骤214:接收到该响应消息的车辆节点利用公式(1)计算等待时间,如果在等待时间内,该车辆节点接收到一个响应消息,该响应消息与自己保存的一个响应消息具有相同的名称域值,时间戳域值,坐标域值,数据域值,跳数域值同时响应消息负载中的随机数也相同,则执行步骤216,否则执行步骤215;
步骤215:接收到该响应消息的车辆节点将该响应消息负载中的坐标域值更新为自己的坐标,转发该响应消息,执行步骤211;
步骤216:接收到该响应消息的车辆节点选择保存的一个响应消息,该响应消息与在等待时间内接收到的响应消息具有相同的名称域值,时间戳域值,坐标域值,数据域值,跳数域值,且负载中的随机数也相同,删除该保存的响应消息,执行步骤211;
步骤217:结束。
3.根据权利要求1所述的一种车载传感网的实现方法,其特征在于,数据C1由名称NA1和属性A1标识,属性A1中的时间戳为T1,坐标为(x1,y1);如果车辆节点VN2需要获取数据C1,坐标(x1,y1)在车辆节点VN2的一跳范围内,且车辆节点VN2的任何一个邻居车辆节点都不能提供数据C1,则车辆节点VN2通过下述过程获取数据C1:步骤301:开始;
步骤302:车辆节点VN2等待时间TS1,时间TS1为预先设置值,如果在时间TS1内,车辆节点VN2接收到一个请求消息,该请求消息的名称域值为NA1,时间戳为T1,坐标为(x1,y1),则执行步骤309,否则执行步骤303;
步骤303:车辆节点VN2发送请求消息,该请求消息的消息类型为2,名称域值为NA1,时间戳为T1,坐标为(x1,y1),跳数值为1,负载为一个随机数和车辆节点VN2的坐标;
步骤304:判断是否车辆节点接收到该请求消息,是则执行步骤305,否则执行步骤306;
步骤305:接收到该请求消息的车辆节点丢弃该请求消息,执行步骤309;
步骤306:判断接收到该请求消息的传感节点的坐标是否等于(x1,y1),是则执行步骤
308,否则执行步骤307;
步骤307:接收到该请求消息的传感节点丢弃该请求消息,执行步骤309;
步骤308:接收到该请求消息的传感节点创建由该请求消息的名称、时间戳和坐标所标识的数据,发送一个响应消息,该响应消息的消息类型为3,名称域值,时间戳域值和坐标域值分别等于该请求消息的名称域值,时间戳域值和坐标域值,跳数域值等于1,数据域值等于该传感节产生的数据,负载域值包括该请求消息负载中的随机数和该传感节点的坐标值;
步骤309:判断是否传感节点接收到该响应消息,是则执行步骤310,否则执行步骤311;
步骤310:接收到该响应消息的传感节点丢弃该响应消息,执行步骤315;
步骤311:接收到该响应消息的车辆节点保存该响应消息,创建一个数据表项,该数据表项的名称域值,时间戳域值,坐标域值和数据域值分别等于该响应消息的名称域值,时间戳域值,坐标域值和数据域值;该车辆节点将该响应消息的跳数域值递减1,如果该响应消息的跳数域值等于0,则执行步骤315;否则执行步骤312;
步骤312:接收到该响应消息的车辆节点利用公式(1)计算等待时间,如果在等待时间内,该车辆节点接收到一个响应消息,该响应消息与自己保存的一个响应消息具有相同的名称域值,时间戳域值,坐标域值,数据域值,跳数域值同时响应消息负载中的随机数也相同,则执行步骤314,否则执行步骤313;
步骤313:接收到该响应消息的车辆节点将该响应消息负载中的坐标域值更新为自己的坐标,转发该响应消息,执行步骤309;
步骤314:接收到该响应消息的车辆节点选择保存的一个响应消息,该响应消息与在等待时间内接收到的响应消息具有相同的名称域值,时间戳域值,坐标域值,数据域值,跳数域值,且负载中的随机数也相同,删除该保存的响应消息,执行步骤309;
步骤315:结束。
4.根据权利要求1所述的一种车载传感网的实现方法,其特征在于,数据C1由名称NA1和属性A1标识,属性A1中的时间戳为T1,坐标为(x1,y1);如果车辆节点VN1需要获取数据C1,坐标(x1,y1)不在车辆节点VN1的H2跳范围内,车辆节点VN1没有任何一个邻居车辆节点能够提供数据C1,但是在H2跳范围内至少存在一个车辆节点能够提供数据C1,H2为大于1的正整数,则车辆节点VN1通过下述过程获取数据C1:步骤401:开始;
步骤402:车辆节点VN1等待时间TS1,时间TS1为预先设置值,如果在时间TS1内,车辆节点VN1接收到一个请求消息,该请求消息的名称域值为NA1,时间戳为T1,坐标为(x1,y1),则执行步骤411,否则执行步骤403;
步骤403:车辆节点VN1发送请求消息,该请求消息的消息类型为2,名称域值为NA1,时间戳为T1,坐标为(x1,y1),跳数值为H2,负载为一个随机数和车辆节点VN1的坐标;
步骤404:判断是否传感节点接收到该请求消息,是则执行步骤405,否则执行步骤406;
步骤405:接收到该请求消息的传感节点丢弃该请求消息,执行步骤411;
步骤406:接收到该请求消息的车辆节点将该请求消息的跳数域值递减1;如果该车辆节点能够提供该请求消息的名称域值,时间戳域值和坐标域值标识的数据,则根据公式(2)计算等待时间,否则该车辆节点将根据公式(1)计算等待时间;如果该车辆节点能够提供该请求消息的名称域值,时间戳域值和坐标域值标识的数据且在等待时间内没有接收到名称域值,时间戳域值和坐标域值等于该请求消息的名称域值,时间戳域值和坐标域值的响应消息,则执行步骤407,否则执行步骤408;
步骤407:接收到该请求消息的车辆节点发送响应消息,该响应消息的消息类型为3,名称域值,时间戳域值和坐标域值分别等于该请求消息的名称域值,时间戳域值和坐标域值,跳数域值等于H2,数据域值等于该请求消息中名称域值,时间戳域值和坐标域值所标识的数据,负载域值包括该请求消息负载中的随机数和该车辆节点的坐标值,执行步骤411;
步骤408:如果接收到该请求消息的车辆节点不能提供该请求消息的名称域值,时间戳域值和坐标域值标识的数据且在等待时间内没有接收到名称域值,时间戳域值和坐标域值等于该请求消息的名称域值,时间戳域值和坐标域值的请求消息或者响应消息,则执行步骤409,否则执行步骤411;
步骤409:接收到该请求消息的车辆节点查看该请求消息的跳数域值;判断该跳数域值是否等于0,是则执行步骤411,否则执行步骤410;
步骤410:接收到该请求消息的车辆节点将该请求消息中的坐标更新为自己的坐标,转发该请求消息,执行步骤404;
步骤411:判断是否传感节点接收到该响应消息,是则执行步骤412,否则执行步骤413;
步骤412:接收到该响应消息的传感节点丢弃该响应消息,执行步骤417;
步骤413:接收到该响应消息的车辆节点保存该响应消息,创建一个数据表项,该数据表项的名称域值,时间戳域值,坐标域值和数据域值分别等于该响应消息的名称域值,时间戳域值,坐标域值和数据域值;该车辆节点将该响应消息的跳数域值递减1,如果该响应消息的跳数域值等于0,则执行步骤417;否则执行步骤414;
步骤414:接收到该响应消息的车辆节点利用公式(1)计算等待时间,如果在等待时间内,该车辆节点接收到一个响应消息,该响应消息与自己保存的一个响应消息具有相同的名称域值,时间戳域值,坐标域值,数据域值,跳数域值同时响应消息负载中的随机数也相同,则执行步骤416,否则执行步骤415;
步骤415:接收到该响应消息的车辆节点将该响应消息负载中的坐标域值更新为自己的坐标,转发该响应消息,执行步骤411;
步骤416:接收到该响应消息的车辆节点选择保存的一个响应消息,该响应消息与在等待时间内接收到的响应消息具有相同的名称域值,时间戳域值,坐标域值,数据域值,跳数域值,且负载中的随机数也相同,删除该保存的响应消息,执行步骤411;
步骤417:结束。
5.根据权利要求1所述的一种车载传感网的实现方法,其特征在于,数据C1由名称NA1和属性A1标识,属性A1中的时间戳为T1,坐标为(x1,y1);如果车辆节点VN2需要获取数据C1,坐标(x1,y1)在车辆节点VN2的H2跳范围内,车辆节点VN2在H2跳范围内没有任何一个车辆节点能够提供数据C1,H2为大于1的正整数,则车辆节点VN2通过下述过程获取数据C1:步骤501:开始;
步骤502:车辆节点VN2等待时间TS1,时间TS1为预先设置值,如果在时间TS1内,车辆节点VN1接收到一个请求消息,该请求消息的名称域值为NA1,时间戳为T1,坐标为(x1,y1),则执行步骤511,否则执行步骤503;
步骤503:车辆节点VN2发送请求消息,该请求消息的消息类型为2,名称域值为NA1,时间戳为T1,坐标为(x1,y1),跳数值为H2,负载为一个随机数和车辆节点VN2的坐标;
步骤504:判断是否坐标为(x1,y1)的传感节点接收到该请求消息,是则执行步骤506,否则执行步骤505;
步骤505:接收到该请求消息的传感节点丢弃该请求消息,执行步骤511;
步骤506:判断接收到该请求消息的传感节点的坐标是否等于(x1,y1),是则执行步骤
507,否则执行步骤508;
步骤507:接收到该请求消息的传感节点创建由该请求消息的名称、时间戳和坐标所标识的数据,发送一个响应消息,该响应消息的消息类型为3,名称域值,时间戳域值和坐标域值分别等于该请求消息的名称域值,时间戳域值和坐标域值,跳数域值等于H2,数据域值等于该传感节产生的数据,负载域值包括该请求消息负载中的随机数和该传感节点的坐标值,执行步骤511;
步骤508:接收到该请求消息的车辆节点将该请求消息的跳数域值递减1,判断该请求消息的跳数域值是否等于0,是则执行步骤511,否则执行步骤509;
步骤509:接收到该请求消息的车辆节点保存该请求消息,并根据公式(1)计算等待时间,如果在等待时间内,该车辆节点接收到一个请求消息,该请求消息与之前保存的请求消息具有相同的名称域值,时间戳域值,坐标域值,数据域值,跳数域值以及请求消息负载中的随机数也相同,则执行步骤504,否则执行步骤510;
步骤510:接收到该请求消息的车辆节点将该请求消息负载中的坐标更新为自己的坐标,转发该请求消息,执行步骤504;
步骤511:判断是否传感节点接收到该响应消息,是则执行步骤512,否则执行步骤513;
步骤512:接收到该响应消息的传感节点丢弃该响应消息,执行步骤517;
步骤513:接收到该响应消息的车辆节点保存该响应消息,创建一个数据表项,该数据表项的名称域值,时间戳域值,坐标域值和数据域值分别等于该响应消息的名称域值,时间戳域值,坐标域值和数据域值;该车辆节点将该响应消息的跳数域值递减1,判断该响应消息的跳数域值是否等于0,是则执行步骤517;否则执行步骤514;
步骤514:接收到该响应消息的车辆节点利用公式(1)计算等待时间,如果在等待时间内,该车辆节点接收到一个响应消息,该响应消息与自己保存的一个响应消息具有相同的名称域值,时间戳域值,坐标域值,数据域值,跳数域值同时响应消息负载中的随机数也相同,则执行步骤515,否则执行步骤516;
步骤515:接收到该响应消息的车辆节点将该响应消息负载中的坐标域值更新为自己的坐标,转发该响应消息,执行步骤511;
步骤516:接收到该响应消息的车辆节点选择保存的一个响应消息,该响应消息与在等待时间内接收到的响应消息具有相同的名称域值,时间戳域值,坐标域值,数据域值,跳数域值,且负载中的随机数也相同,删除该保存的响应消息,执行步骤511;
步骤517:结束。