Симуляция пешеходов в жилах (omnet ++ / sumo) - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь запустить симуляцию пешехода из сумо в omnet ++.Для простоты (я новичок) я решил использовать пример Erlangen с венами и расширить его с помощью пары пешеходов.Я добавил пешеходов в сумо и запустил его.Он отлично работает: Вы можете увидеть пешеходов и машины на этой картинке

Далее я пытался запустить все это в omnet ++.Мне тоже это удалось, но пешеходов не показали.Просто машины.Я читаю эти две темы:

и добавил эти строки в omnetpp.ini примера:

*.manager.moduleType = "vtype0=org.car2x.veins.nodes.Car ped_pedestrian=org.car2x.veins.nodes.Pedestrian"
*.manager.moduleName = "vtype0=carNode ped_pedestrian=pedestrianNode"
*.manager.moduleDisplayString = "vtype0=carNode ped_pedestrian=pedestrianNode"

Я также изменил каждый вид «узла» в omnetpp.ini в "carNode" и создал новые записи для "pedestrianNode", и я продублировал файл Car.ned и изменил имя файла на Pedestrian.ned и имя модуля"пешеходу".Затем я снова запустил все это, но ничего не изменилось, за исключением того, что изображение автомобилей (как показано в симуляции) изменилось на серый прямоугольник.

Почему пешеходов не показывают?(Я что-то пропустил?) Нужно ли указывать жилам (или сумо) сообщать позиции пешеходов в omnet ++?Почему значок машин в симуляции сменился серым квадратом?

Вот файлы, которые я добавил / изменил:

Редактировать:

Я исследовал определение TraCI иотлажен [исходный код вен].Я нашел этих строк кода, где выполняются подписки:

{
    // subscribe to list of departed and arrived vehicles, as well as simulation time
    simtime_t beginTime = 0;
    simtime_t endTime = SimTime::getMaxTime();
    std::string objectId = "";
    uint8_t variableNumber = 7;
    uint8_t variable1 = VAR_DEPARTED_VEHICLES_IDS;
    uint8_t variable2 = VAR_ARRIVED_VEHICLES_IDS;
    uint8_t variable3 = commandInterface->getTimeStepCmd();
    uint8_t variable4 = VAR_TELEPORT_STARTING_VEHICLES_IDS;
    uint8_t variable5 = VAR_TELEPORT_ENDING_VEHICLES_IDS;
    uint8_t variable6 = VAR_PARKING_STARTING_VEHICLES_IDS;
    uint8_t variable7 = VAR_PARKING_ENDING_VEHICLES_IDS;
    TraCIBuffer buf = connection->query(CMD_SUBSCRIBE_SIM_VARIABLE, TraCIBuffer() << beginTime << endTime << objectId << variableNumber << variable1 << variable2 << variable3 << variable4 << variable5 << variable6 << variable7);
    processSubcriptionResult(buf);
    ASSERT(buf.eof());
}

{
    // subscribe to list of vehicle ids
    simtime_t beginTime = 0;
    simtime_t endTime = SimTime::getMaxTime();
    std::string objectId = "";
    uint8_t variableNumber = 1;
    uint8_t variable1 = ID_LIST;
    TraCIBuffer buf = connection->query(CMD_SUBSCRIBE_VEHICLE_VARIABLE, TraCIBuffer() << beginTime << endTime << objectId << variableNumber << variable1);
    processSubcriptionResult(buf);
    ASSERT(buf.eof());
}

Я сравнил это с документацией TraCI на вики sumo:
* первый блок для подписок на симуляции: https://sumo.dlr.de/wiki/TraCI/Simulation_Value_Retrieval
* второй блок кода для подписки на транспортное средство: https://sumo.dlr.de/wiki/TraCI/Vehicle_Value_Retrieval

Мне кажется, что пешеходы там не включены, так как люди / пешеходы имеют разные API (https://sumo.dlr.de/wiki/TraCI/Person_Value_Retrieval)который не указан на странице подписки (https://sumo.dlr.de/wiki/TraCI/Object_Variable_Subscription).

Есть ли что-то, что я пропустил в исходном коде вен, где осуществляется подписка на человека?

Возможно ли даже подписаться на людей вТрэйси

1 Ответ

0 голосов
/ 26 февраля 2019

Вы абсолютно правы.Начиная с Вен 5a1, Пешеходы ( Персоны на языке SUMO) не поддерживаются Венами из коробки, что означает, что пользователь должен написать дополнительный код.

Для внутренних проектов у нас естьпросто клонировал код, обрабатывающий подписки транспортного средства, заменяя имена классов и переменных там, где это необходимо (т. е. CMD_SUBSCRIBE_PERSON_VARIABLE = 0xde для ID_LIST, затем подписываясь на VAR_POSITION и т. д. для каждого нового человека, и реагируя на изменения этих переменных, вызывая addModule и nextPosition).

...