Я пытаюсь смоделировать сценарий, в котором после того, как фиксированное количество транспортных средств достигло узла назначения, транспортные средства после этого должны отправиться в другой пункт назначения. Для этого я хочу иметь RSU в пункте назначения, который отправляет сообщение после того, как он получил фиксированное количество автомобилей??
Динамическое изменение узла назначения для транспортных средств
comment
Пока допустимый сценарий/прецедент. Какая у вас сейчас проблема/вопрос?
- person Julian Heinovski   schedule 17.03.2017
comment
Я хочу знать, как и какие команды использовать, чтобы смоделировать описанный сценарий??
- person Rohit Tapikar   schedule 18.03.2017
comment
Что вы уже пробовали? Цель SO состоит не в том, чтобы дать вам точные инструкции для достижения цели, которую вы хотите достичь, а в том, чтобы помочь вам с проблемами, с которыми вы сталкиваетесь после того, как уже попробовали сами. Также, пожалуйста, задайте конкретный вопрос вместо описания вашего сценария.
- person Julian Heinovski   schedule 20.03.2017
comment
Кроме того, я думаю, что вы уже получили некоторую важную информацию в своем предыдущем вопросе о динамическом изменении маршрута транспортных средств.
- person Julian Heinovski   schedule 20.03.2017
comment
Я просмотрел команды Traci и нашел команду changeTarget, но не могу понять, как ее использовать на моем прикладном уровне для RSU??
- person Rohit Tapikar   schedule 22.03.2017
Ответы (1)
Что-то похожее на то, что вы просите, делается в демо-сценарии Veins:
Сторона RSU
void TraCIDemoRSU11p::sendMessage(std::string blockedRoadId) {
sentMessage = true;
t_channel channel = dataOnSch ? type_SCH : type_CCH;
WaveShortMessage* wsm = prepareWSM("data", dataLengthBits, channel, dataPriority, -1,2);
wsm->setWsmData(blockedRoadId.c_str());
sendWSM(wsm);
}
wsm->setWsmData(blockedRoadId.c_str())
кодирует идентификатор заблокированной дороги в сообщение, чтобы автомобили могли его прочитать.
Боковая часть автомобиля
void TraCIDemo11p::onData(WaveShortMessage* wsm) {
findHost()->getDisplayString().updateWith("r=16,green");
annotations->scheduleErase(1, annotations->drawLine(wsm->getSenderPos(), mobility->getPositionAt(simTime()), "blue"));
if (mobility->getRoadId()[0] != ':') traciVehicle->changeRoute(wsm->getWsmData(), 9999);
if (!sentMessage) sendMessage(wsm->getWsmData());
}
traciVehicle->changeRoute()
используется для изменения маршрута.
person
user4786271
schedule
03.04.2017