我希望在静脉情景中将给定汽车的车辆数据(例如vType
,瞬时speed
和position
)传输到RSU。
如何从SUMO获取数据并通过MiXiM方法将其发送到RSU节点?
答案 0 :(得分:3)
要实现目标,您必须使用TraCIMobility
的{{1}}组件。
您可以首先在节点的Veins
方法中获取指向该组件的指针
initialize()
获得cModule *tmpMobility = getParentModule()->getSubmodule("veinsmobility");
mobility = dynamic_cast<Veins::TraCIMobility*>(tmpMobility);
ASSERT(mobility);
组件后,您可以查询各种数据。
可以在mobility
例如,在您的情况下,您可以这样做:
TraCIMobility.h
然后,您可以将此数据附加到您的消息中,然后将其发送到您选择的RSU。
如果这个确切的解决方案对您不起作用,可能是因为我使用了与您不同的静脉版本。
但是,您肯定会在Veins项目的mobility->getCurrentSpeed().length()); /* will provide velocity vector */
mobility->getAngleRad()); /* will provide angle of movement */
或TraCIDemo11p.cc
中找到所需内容。
另外,TraCIDemoRSU.cc
是你应该看的东西。
在Documentation部分的官方静脉网站上,据说:
应用程序模块可以使用 TraCICommandInterface 类和 相关课程,可以从 TraCIMobility 方便地访问 与运行模拟交互。以下示例说明了如何操作 使车辆意识到在称为Second的道路上交通缓慢 街道,可能导致它改变路线以避开这条道路。
TraCICommandInterface
其他一些与车辆相关的命令是 setSpeed 或 setParking 。 类似的方法可用于整个模拟(例如, addVehicle , addPolygon ),道路( getMeanSpeed ),个别车道 ( getShape ),红绿灯( setProgram ),多边形( setShape ),点 兴趣,路口,路线,车辆类型或图形用户 接口
如何使用这些模块在源代码中进行了演示 静脉教程示例。同样,所有80多种可用方法的列表都可以 可以在 TraCICommandInterface.h 或自动生成的模块中找到 文档。
此处可能存在相关问题/答案:https://stackoverflow.com/a/29918148/4786271