Как подсчитать количество автомобилей в определенном диапазоне

В венах я пытаюсь смоделировать сценарий VANET, в котором, если дорога заблокирована, то по прошествии определенного времени автомобиль транслирует сообщение, включая идентификатор заблокированной дороги и количество транспортных средств вокруг его 100 метров.

В приложении TraCIDemo11p, когда автомобиль останавливается более чем на 10 секунд, он меняет цвет узла на красный (чтобы показать аварию) и отправляет другим автомобилям сообщение, содержащее идентификатор заблокированной дороги, все это делается в механизме 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);
}

Предел в 100 м можно установить, обновив значение maxInterfDist в файле .ini.

*.connectionManager.maxInterfDist = 100m

Теперь у меня есть проблема, как получить количество транспортных средств и 100 м площади. У меня есть идея, что это будет сделано с помощью TraCI и, скорее всего, с помощью getJamLengthVehicle от LaneAreaDetector, но я не понимаю, как это будет сделано в венах, есть ли их эквивалентный метод или я смотрю в неправильном направлении?


person Ahmad Ahsan    schedule 28.02.2018    source источник


Ответы (1)


Вы можете получить список всех транспортных средств в моделировании OMNeT ++, используя TraCIScenarioManager :: getManagedHosts. Отсюда должно быть легко вычислить расстояние между любыми двумя хостами (их расположение на холсте OMNeT ++ эквивалентно их положению, измеренному в метрах).

person Christoph Sommer    schedule 28.02.2018