如何从TraCIDem11p.cc获取RSU坐标?

时间:2017-02-21 08:10:30

标签: omnet++ veins

我想知道如何在车辆靠近RSU时开始编写能够发送信息的程序。 首先,我仍然对某些定义感到困惑,但是,一点一点地说,我想我会学习静脉。

module = simulation.getModuleByPath("rsu[0]");
c = MobilityAccess().get(module)->getCurrentPosition();

我在这个帖子中找到了这部分代码:Getting the location of two different modules

但仍然有一些问题:

1)Module是什么样的对象?我猜是TraCIMobility*

2)simulation怎么样?我不知道。

那么,有人可以先向我解释如何在TraCIDemo11p.cc中获取RSU坐标吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

如果您研究Veins 4.4教程模拟(例如,通过在OMNeT ++的TkEnv中运行它),您将看到rsu[0]包含名为mobility的子模块,其类型为BaseMobility。如果您调查BaseMobility课程,您会看到它有一个方法getCurrentPosition()。大概是通过阅读OMNeT ++用户手册,您已经知道如何获得模拟中任何模块的指针。

将这些知识放在一起,您已经找到了一种方法(通过多种可能的方式)来获取静脉模拟中(命名)节点的位置。

假设您正在使用Veins 4.4,模拟中的任何OMNeT ++模块都可以执行以下代码,以获取名为rsu[0]的节点的位置:

Coord pos = check_and_cast<BaseMobility*>(getSimulation()->getModuleByPath("rsu[0].mobility"))->getCurrentPosition();

答案 1 :(得分:0)

此外,如果您需要动态方式来获取RSU坐标。主要是如果您有一个具有多个RSU的方案,您可以使用&#34; findSubModule&#34;

BaseMobility *baseMob;
baseMob = FindModule<BaseMobility*>::findSubModule(getParentModule());
Coord rsuCoord = baseMob->getCurrentPosition();

希望这可以帮助某人。

干杯。