Ошибка Omnetpp INET: позиция подвижности не является конечным числом после инициализации

Очень новичок в омнете, но я пытался настроить беспроводную сеть поверх StandardHost. Хотя он хорошо компилируется, когда начинается симуляция, я получаю эту ошибку:

Mobility position is not a finite number after initialize (x=-nan,y=-nan,z=-nan) -- in module (inet::StationaryMobility) Net.node[0].mobility (id=12), during network initialization

Ниже мои package.ned, omnetpp.ini и mwe.ned.

Если я настрою Node подмодули Net один за другим и добавлю фиксированное свойство @display("p=...") к каждому из них, тогда все заработает. Настройка их более параметрически, т.е. node[size]: Node; не удается выполнить моделирование с указанной выше ошибкой.

Любая помощь будет очень высоко ценится.

Заранее спасибо!

package.ned

package mwe;

omnetpp.ini

[General]
network = Net
*.radioMedium.typename = "Ieee802154NarrowbandScalarRadioMedium"
*.host*.wlan[0].radio.typename = "Ieee802154NarrowbandScalarRadio"
**.wlan[0].typename = "Ieee802154NarrowbandInterface"
*.host*.ipv4.arp.typename = "GlobalArp"
*.size = 2

mwe.ned

package mwe;

import inet.node.inet.StandardHost;
import inet.physicallayer.unitdisk.UnitDiskRadioMedium;
import inet.physicallayer.contract.packetlevel.IRadioMedium;
import inet.networklayer.configurator.ipv4.Ipv4NetworkConfigurator;

module Node extends StandardHost
{
    parameters:
        numWlanInterfaces = default(1);
}

network Net
{
    parameters:
        int size = default(1);
    submodules:
        configurator: Ipv4NetworkConfigurator;
        radioMedium: <default("UnitDiskRadioMedium")> like IRadioMedium;
        node[size]: Node;
}

person dioklis    schedule 28.11.2019    source источник


Ответы (1)


У меня была аналогичная проблема с тем же сообщением об ошибке.

Я решил это, установив следующие параметры:

*.host[*].mobility.constraintAreaMaxX = 650m
*.host[*].mobility.constraintAreaMinX = 0m
*.host[*].mobility.constraintAreaMaxY = 500m
*.host[*].mobility.constraintAreaMinY = 0m
*.host[*].mobility.constraintAreaMaxZ = 0m
*.host[*].mobility.constraintAreaMinZ = 0m

Я нашел решение, читая метод MobilityBase::setInitialPosition: с минимальной конфигурацией вызывается getRandomPosition и использует эти значения как min и max для случайного.

person Lou_is    schedule 30.03.2020