在VEINS 4.4中,可以通过通过 TraCIMobility 定义的“移动性”模块在应用程序层(例如 TraCIDemo11p )访问车辆的当前位置。
我使用相同的方法访问较低层( MAC1609_4.cc )的Mobility模块,其中在初始化函数的第0阶段添加了以下语句:
TraCIMobility* mobility = TraCIMobilityAccess().get(getParentModule());
但是,我没有收到任何编译错误,但是当OMNET在模拟开始时抛出错误时,它会发出以下错误。
模块(MAC1609_4)中的错误 事件#2的RSUExampleScenario.node [0] .nic.mac1609_4(id = 12),t = 0.1: 断言:条件traci在函数get中为false, \ veins / modules / mobility / traci / TraCIMobility.h第193行
我一直在寻找不同的可能解决方案,但是,我仍然无法解决此问题。
相关文章为:
How to access TraCI command interface from TraCIDemoRSU11p in Veins Car2X simulator?
Transmission of vehicular status in Veins
答案 0 :(得分:1)
您正试图访问 Mac1609_4 的父模块中的 TraCIMobility 子模块。但是,这不是 Car ,而是 Nic80211p ,它没有这样的子模块,因此是失败的断言。
当您在层次结构中上一层时,它应该工作,因为然后您将 Car 模块用作根来查找相应的子模块:
TraCIMobility* mobility = TraCIMobilityAccess().get(getParentModule()->getParentModule());
请参见 Car 模块和 Nic80211p 模块以供参考: