如何获得特定范围内的汽车数量

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 上的位置相当于它们的位置,以米为单位)。