【问题标题】:How to differentiate RSU IDs from Node IDs in Veins and Omnet++?如何区分 Veins 和 Omnet++ 中的 RSU ID 和节点 ID?
【发布时间】:2019-09-05 13:58:52
【问题描述】:

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

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

我们尝试过改变TraCIDemoRSU11p的initialize方法中的myId属性,但是当消息即将发送时,接收方没有收到。通过分析汽车收到的信标消息,我们可以知道 RSU 有修改后的 ID,例如 50。然后我们使用 populateWSM 方法并将 rcvID 参数声明为 50,但 RSU 上从未收到该消息。

我们使用的是 Veins 4.7.1。和 OmNet++ 5.4.1。

【问题讨论】:

    标签: omnet++ veins


    【解决方案1】:

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

    如果您不适合切换到 Veins 5,那么向后移植此更改应该很简单。

    【讨论】:

    • 感谢 Sommer 先生的回复。目前,切换到 Veins 5 不是我们的选择。你建议我们如何在当前版本中解决这个问题,我不太了解“反向移植”的情况。
    • 我的建议是找到更改上述行的 git commit 并在您的代码库中进行相同的更改。
    • 已解决。感谢您抽出时间,萨默先生。
    猜你喜欢
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    相关资源
    最近更新 更多