如何获得特定范围内的汽车数量
How to get count of cars in specific range
我试图模拟一个 VANET 场景,如果道路被阻塞,那么在特定时间后汽车会广播一条消息,包括阻塞的 roadId 和它周围 100 米的车辆数量。
在 TraCIDemo11p 应用程序中,当汽车停止超过 10 秒时,它会将节点颜色更改为红色(以显示事故)并向其他包含阻塞道路 ID 的汽车发送消息,所有这些都在handlePositionUpdate 方法:
findHost()->getDisplayString().updateWith("r=16,red");
sentMessage = true;
WaveShortMessage* wsm = new WaveShortMessage();
populateWSM(wsm);
wsm->setWsmData(mobility->getRoadId().c_str());
//host is standing still due to crash
if (dataOnSch) {
startService(Channels::SCH2, 42, "Traffic Information Service");
//started service and server advertising, schedule message to self to send later
scheduleAt(computeAsynchronousSendingTime(1,type_SCH),wsm);
}
else {
//send right away on CCH, because channel switching is disabled
sendDown(wsm);
}
100m的限制可以通过更新.ini文件中的maxInterfDist值来设置
*.connectionManager.maxInterfDist = 100m
现在我遇到的问题是如何计算车辆数量和 100 米的面积,我认为这将使用 TraCI 完成并且很可能使用 LaneAreaDetector's getJamLengthVehicle 但我不知道如何这将在静脉中完成,他们有任何等效方法还是我看错方向了?
您可以使用 TraCIScenarioManager::getManagedHosts 方法获取 OMNeT++ 模拟中所有车辆的列表。从那里,计算任意两个主机之间的距离应该很简单(它们在 OMNeT++ canvas 上的位置相当于它们的位置,以米为单位)。
我试图模拟一个 VANET 场景,如果道路被阻塞,那么在特定时间后汽车会广播一条消息,包括阻塞的 roadId 和它周围 100 米的车辆数量。
在 TraCIDemo11p 应用程序中,当汽车停止超过 10 秒时,它会将节点颜色更改为红色(以显示事故)并向其他包含阻塞道路 ID 的汽车发送消息,所有这些都在handlePositionUpdate 方法:
findHost()->getDisplayString().updateWith("r=16,red");
sentMessage = true;
WaveShortMessage* wsm = new WaveShortMessage();
populateWSM(wsm);
wsm->setWsmData(mobility->getRoadId().c_str());
//host is standing still due to crash
if (dataOnSch) {
startService(Channels::SCH2, 42, "Traffic Information Service");
//started service and server advertising, schedule message to self to send later
scheduleAt(computeAsynchronousSendingTime(1,type_SCH),wsm);
}
else {
//send right away on CCH, because channel switching is disabled
sendDown(wsm);
}
100m的限制可以通过更新.ini文件中的maxInterfDist值来设置
*.connectionManager.maxInterfDist = 100m
现在我遇到的问题是如何计算车辆数量和 100 米的面积,我认为这将使用 TraCI 完成并且很可能使用 LaneAreaDetector's getJamLengthVehicle 但我不知道如何这将在静脉中完成,他们有任何等效方法还是我看错方向了?
您可以使用 TraCIScenarioManager::getManagedHosts 方法获取 OMNeT++ 模拟中所有车辆的列表。从那里,计算任意两个主机之间的距离应该很简单(它们在 OMNeT++ canvas 上的位置相当于它们的位置,以米为单位)。