首页 > 解决方案 > 如何获取静脉中的 RSU 节点坐标?

问题描述

Veins 5.0在我的模拟环境中使用。

当前有 4 个 RSU 节点正在使用中。omnetpp.ini代码如下:

omn​​etpp.ini

*.fRSU[0].mobility.x = 125
*.fRSU[0].mobility.y = 125
*.fRSU[0].mobility.z = 3
...

这是 RSU 的 C++ 代码:

fRSUBehavior.cc

posX = check_and_cast<BaseMobility*>(getSimulation() -> getModuleByPath("fRSU[0].mobility.x")) -> getPositionAt(simTime()).x;
posY = check_and_cast<BaseMobility*>(getSimulation() -> getModuleByPath("fRSU[0].mobility.y")) -> getPositionAt(simTime()).y;
EV << "X: " << posX << " Y: " << posY << std::endl;

在此文件中,我想获取该节点的位置。但是,日志输出的值始终定义为 0。

我应该如何修改代码?

标签: omnet++veins

解决方案


getModuleByPath("fRSU[0].mobility.x"))不太可能奏效。模块名很可能fRSU[0].mobility,即不包含参数名。很可能,getModuleByPath返回一个 Null 指针,并且偶然地,您的程序不会崩溃,但您正在读取一些合理的值。


推荐阅读