Как получить координату RSU из TraCIDem11p.cc?

Мне было интересно, как я могу начать писать программу, способную отправлять сообщения, когда автомобиль приближается к RSU. Во-первых, меня все еще сбивают с толку некоторые определения, но постепенно я думаю, что выучу вены.

module = simulation.getModuleByPath("rsu[0]");
c = MobilityAccess().get(module)->getCurrentPosition();

Я нашел эту часть кода в этой ветке: Получение местоположения двух разных модулей < / а>

Но остались вопросы:

1) Module это что за объект? Я думаю TraCIMobility*

2) А как насчет simulation? Я понятия не имею.

Итак, не мог бы кто-нибудь сначала объяснить мне, как получить координаты RSU в TraCIDemo11p.cc?

Спасибо!


person pb772    schedule 21.02.2017    source источник
comment
StackOverflow - это поиск хороших ответов на (хороших) вопросов. На ваш вопрос сложно найти хороший ответ, потому что он задает несколько разных вопросов. Не могли бы вы ограничить каждое сообщение одним вопросом и сформулировать его как можно более обобщенно, чтобы помочь как можно большему количеству людей? (например, учитывая два объекта Veins Coord, как я могу рассчитать расстояние до них?)   -  person Christoph Sommer    schedule 21.02.2017
comment
Хорошо, спасибо за предложение. Я начну спрашивать, как получить координаты RSU из TraCIDemo11p.cc, я думаю, что остальную часть я смогу сделать сам после того, как получу координаты RSU.   -  person pb772    schedule 21.02.2017


Ответы (2)


Если вы исследуете учебную симуляцию Veins 4.4 (например, запустив ее в TkEnv OMNeT ++), вы увидите, что rsu[0] содержит подмодуль с именем mobility, который имеет тип BaseMobility. Если вы исследуете класс BaseMobility, вы увидите, что у него есть метод getCurrentPosition(). Предположительно, прочитав руководство пользователя OMNeT ++, вы уже знаете, как получить указатель на любой модуль в вашей симуляции.

Соедините эти знания вместе, и вы нашли один способ (из многих возможных) получить позицию (названного) узла в моделировании жил.

Предполагая, что вы используете Veins 4.4, следующий код может быть выполнен любым модулем OMNeT ++ в моделировании, чтобы получить позицию узла с именем rsu[0]:

Coord pos = check_and_cast<BaseMobility*>(getSimulation()->getModuleByPath("rsu[0].mobility"))->getCurrentPosition();
person Christoph Sommer    schedule 21.02.2017

Кроме того, если вам нужен динамический способ получить координаты RSU. В основном, если у вас есть сценарий с более чем одним RSU, вы можете использовать "findSubModule":

BaseMobility *baseMob;
baseMob = FindModule<BaseMobility*>::findSubModule(getParentModule());
Coord rsuCoord = baseMob->getCurrentPosition();

Надеюсь, это может кому-то помочь.

Ваше здоровье.

person Pedro Libório    schedule 13.07.2017