首页 > 解决方案 > Omnetpp INET 错误:初始化后移动位置不是有限数

问题描述

对 omnet 来说非常新,但我一直在尝试在 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.inimwe.ned.

如果我一个一个地设置Node子模块Net并为每个子模块添加一个固定属性@display("p=..."),那么它就可以工作。更参数化地设置它们,即node[size]: Node;它无法执行模拟并出现上述错误。

任何帮助将不胜感激。

提前致谢!

package.ned

package mwe;

omn​​etpp.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;
}

标签: omnet++inet

解决方案


我有一个类似的问题,有完全相同的错误信息。

我通过设置以下参数解决了它:

*.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调用,并将这些值用作随机数的最小值和最大值。


推荐阅读