-1

我想在 Veins 的场景中将给定汽车的车辆数据(例如它的vType、瞬时数据speed和RSU 数据)传输到 RSU。position

如何从 SUMO 获取数据并通过 MiXiM 方法将其发送到 RSU 节点?

4

1 回答 1

3

为了实现您的目标,您必须使用TraCIMobility.Veins

您可以通过首先在initialize()节点的方法中获取指向该组件的指针来做到这一点

cModule *tmpMobility = getParentModule()->getSubmodule("veinsmobility");
mobility = dynamic_cast<Veins::TraCIMobility*>(tmpMobility);
ASSERT(mobility);

拥有mobility组件后,您可以查询它以获取各种数据。

它可以提供的数据类型可以在TraCIMobility.h

例如,在您的情况下,您可以这样做:

mobility->getCurrentSpeed().length()); /* will provide velocity vector */
mobility->getAngleRad()); /* will provide angle of movement */

然后,您可以将此数据附加到您的消息中,并将其发送到您选择的 RSU。


如果这个确切的解决方案对你不起作用,那可能是因为我使用了与你不同的 Veins 版本。

但是,您肯定会在Veins 项目中找到您需要的东西TraCIDemo11p.ccTraCIDemoRSU.cc

另外,TraCICommandInterface是你应该看看的东西。


文档部分下的官方 Veins 网站上说:

应用程序模块可以使用TraCICommandInterface类和相关类(可从TraCIMobility方便地访问)与正在运行的仿真进行交互。以下示例显示了如何让车辆了解名为 Second Street 的道路上的缓慢车流,这可能会导致其改变路线以避开这条道路。

mobility = TraCIMobilityAccess().get(getParentModule());
traci = mobility->getCommandInterface();
traciVehicle = mobility->getVehicleCommandInterface();
traciVehicle->changeRoute("Second Street", 3600);

其他一些与车辆相关的命令是setSpeedsetParking。类似的方法可用于整个模拟(例如 addVehicleaddPolygon)、道路(getMeanSpeed)、单个车道(getShape)、交通信号灯(setProgram)、多边形(setShape)、兴趣点、路口、路线、车辆类型或图形用户界面。

Veins 教程示例的源代码中演示了如何使用这些模块。同样,所有 80 多种可用方法的列表可以在TraCICommandInterface.h或自动生成的模块文档中找到。

此处可能相关的问题/答案:https ://stackoverflow.com/a/29918148/4786271

于 2015-06-06T11:34:55.903 回答