TraciMobility::getExternalId 将自定义模块添加到 Veins_Inet 示例时出错 (Omnet++)

TraciMobility::getExternalId error when adding custom module into Veins_Inet example (Omnet++)

我正在尝试将新的自定义 RSU 模块(扩展 AdHocHost)添加到 Veins_Inet 示例中。这是我的更新方案(带有 1 个 RSU)。

network TestScenario {
submodules:
    radioMedium: Ieee80211ScalarRadioMedium;
    manager: VeinsInetManager;
    node[0]: VeinsInetCar;

    // added rsu
    rsu: VeinsInetRSU;
connections allowunconnected:}

我还更新了 ini 文件,使 RSU 移动性

*.rsu.mobility.typename = "inet.mobility.static.StationaryMobility" 

并且 RSU 应用程序是准系统,实现较少:

*.rsu.app[0].typename = "practice.veins_inet.VeinsInetRSUSampleApplication".

但是,我收到以下错误:

TraCIMobility::getExternalId called with no external id set yet.

在示例中,VeinsInetManager 使用 TRACI 管理汽车。这是与管理器关联的 ned 文件。源文件有2个功能,预初始化模块和更新模块位置。

simple VeinsInetManager extends TraCIScenarioManagerLaunchd {
parameters:
    @class(veins::VeinsInetManager);}

如何在不引发任何错误的情况下将自定义模块添加到场景中?

您的应用程序可能继承自 VeinsInetApplicationBase,它调用 TraCI 方法(对于非 TraCI 管理的车辆的节点失败)。另见 its source code

为了更加确定,运行 您在调试模式下的模拟,打开 debug-on-errors,并检查堆栈跟踪以查看调用的来源。