How to get RSU coordinate from TraCIDem11p.cc?

本小妞迷上赌 提交于 2020-01-01 04:01:06

问题


I was wondering how can I start writing a program able to send message when a vehicle is close to the RSU. First, I still get confused by some definitions, but, little by little, I think I will learn veins.

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

I found this part of code in this thread: Getting the location of two different modules

But still have some questions:

1) Module is what kind of object? I would guess TraCIMobility*

2) How about simulation? I have no idea.

So, could anyone please first explain to me how to get RSU coordinates in the TraCIDemo11p.cc?

Thanks!


回答1:


If you investigate the Veins 4.4 tutorial simulation (e.g., by running it in OMNeT++'s TkEnv), you will see that rsu[0] contains a submodule named mobility which is of type BaseMobility. If you investigate the BaseMobility class you will see that it has a method getCurrentPosition(). Presumably from reading the OMNeT++ user manual you already know how to get a pointer to any module in your simulation.

Put this knowledge together and you have found one way (of many possible ways) to get the position of a (named) node in a Veins simulation.

Assuming you are using Veins 4.4, the following code can be executed by any OMNeT++ module in the simulation to get the position of a node named rsu[0]:

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



回答2:


Additionally, If you need a dynamic way to get the RSU coordinates. Mainly if you have a scenario with more than one RSU, you can use "findSubModule":

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

Hope this can help someone.

Cheers.



来源:https://stackoverflow.com/questions/42361852/how-to-get-rsu-coordinate-from-tracidem11p-cc

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!