如何使用SimuLTE和Veins启用SUMO TraCI?

时间:2018-04-15 05:41:40

标签: omnet++ veins sumo

我使用SimuLTE和Veins模拟通过LTE发送安全消息。消息的内容取决于流量的实时值,例如平均速度。为了得到这样的值,我计划使用Veins支持的TraCICommandInterface。但是,我无法知道如何以及在哪里可以做到这一点。具体来说,在Veins没有SimuLTE的情况下,我知道车辆节点是TraCIMobility的模块,它有一个应用层,我们可以自定义接收/发送消息的功能,例如wsm,并由{来管理{1}}。但是在simulation example provided by SimuLTE中,车辆/节点是TraCIScenarioManager的模块,由VeinInetMobility管理。他们都没有使用VeinInetManagerTraCICommandInterface。此外,lte applications并未使用与BaseWaveApplLayer相同的图层,我们可以在车辆/节点更新位置时立即执行某些操作。任何人都可以帮助解释我如何使用SimuLTE和Veins实现以下功能:

  1. 为了使用TraCI监控车辆/节点值,我应该修改哪个类来使用TraCI? VeinsInetMobility,VeinsInetManager还是其他?
  2. 只有在对车辆/节点进行位置更新时,如何才能在应用程序中执行操作?
  3. VeinsInetMobility和TraCIMobility之间的本质区别是什么?我可以将后者用于LTE场景吗?

1 个答案:

答案 0 :(得分:2)

在Veins 4.6中,TraCIMobility模块用于在每次节点位置更改时更新 Veins 通道模型。类似地,在Veins 4.6的Veins_INET中,每当节点的位置发生变化时,VeinsInetMobility模块用于更新 INET Framework 通道模型。因为SimuLTE使用INET Framework通道模型,所以这是必须使用的类(否则INET通道模型不会知道,例如,两个节点是否距离太远而无法通信)。

如果您想在每次完成SUMO时间步骤时采取措施,您只需将其添加到executeOneTimestep method of TraCIScenarioManager

请注意,如果您希望通过VeinsInetMobility模块与SUMO车辆进行交互(例如,更改车辆的路线),则需要进行一些更改:Veins 4.6的Veins_INET不会跟踪节点的外部ID( SUMO用于引用相应车辆的ID,因此需要将其与代码一起添加到VeinsInetMobility (line 54)以使用它,类似于TraCIMobility (line 127)