如何区分静脉和Omnet ++中的RSU ID与节点ID?

时间:2019-09-05 13:58:52

标签: omnet++ veins

我们的静脉模拟存在问题。我们正在尝试在演示场景(TraCIDemo11p)中实现有关消息传播的算法,而我们的问题是发送WSM消息。我们想将特定消息从节点(例如汽车)发送到特定RSU。节点通过收集信标消息来了解其邻居,并将发送方的ID和类型存储到缓冲区中。问题是当我们要将消息发送到ID 7的RSU时,如果存在ID 7的节点,则会发送两条消息,因为它们都具有ID7。在哪里可以更改给定的ID隐式地,以便我们可以区分TraCIDemo11p.cc中的节点和RSU?

因为它们是两个不同的模块,所以节点存储在数组node []中,而RSU存储在数组rsu []中,这就是为什么它们可以具有相同的ID或索引的原因。

我们已经尝试通过在TraCIDemoRSU11p的initialize方法中更改myId属性来进行尝试,但是当消息即将发送时,收件人将不会接收到该消息。通过分析汽车收到的信标消息,我们可以知道RSU具有修改后的ID,例如50。然后,我们使用populateWSM方法并将rcvID参数设置为50,但是该消息从未在RSU上收到。

我们正在使用静脉4.7.1。和OmNet ++ 5.4.1。

1 个答案:

答案 0 :(得分:0)

您是正确的:Veins 4.7.1使用主机模块的索引(即“ node [7]”中的7)作为网卡的“ MAC地址”(请参见here)。较新的版本,例如Veins 5.0-alpha2,正在使用完全灵活的方案。此外,它默认使用网卡的OMNeT ++模块ID(请参阅here),它不仅允许区分具有相同索引的主机,而且还可以区分这些主机中的多个网卡。

如果您不希望切换到Veins 5,则应直接移植此更改。