【问题标题】:RSU placement in veins/SUMORSU 放置在静脉/SUMO
【发布时间】:2017-10-19 21:12:21
【问题描述】:

如果我知道 SUMO 中 RSU 的放置坐标,如何将其转换为 omnet++ 的坐标?

我知道 SUMO 的坐标系与 omnet 不同。我是否应该使用内部函数“traci2omnet”中使用的方程将其离线转换(在开始模拟之前)?我试过了,但似乎不准确。

我还尝试在相扑中 RSU 的位置创建一个交汇点,在 omnet 中检索此交汇点的位置,然后将 RSU 放置在相同的坐标处。但是在运行模拟器时(例如在初始化期间)是否可以做这样的场景? 有谁知道最好的解决方案?

【问题讨论】:

    标签: omnet++ veins


    【解决方案1】:

    SUMO 和 OMNeT++ 使用不同的坐标系,这就是为什么使用像 traci2omnet 这样的辅助函数将点从一个坐标系转换到另一个坐标系的原因。在 Veins 4.6 中,此转换的最佳参数是在模拟运行时在线确定的。从好的方面来说,对于相同的场景,这些参数总是相同的。

    因此,一种简单的方法是更改​​任何汽车的应用程序,以便在模拟中创建坐标变换后立即输出坐标变换的结果。然后可以将此转换的结果用作 RSU 的位置。只要场景保持不变,位置就是正确的。

    一个更复杂(但更强大)的解决方案是根据 SUMO 模拟中存在的对象在 OMNeT++ 模拟中动态创建 RSU 模块(很像car modules are created on the fly)。此类对象可能是 SUMO“兴趣点”对象。在这个解决方案中,一旦 OMNeT++ 模拟连接到 SUMO,它就可以查询所有兴趣点的位置,将位置转换到正确的坐标系,并在每个位置实例化一个 RSU。

    【讨论】:

    • 感谢您的回复。请指出在源代码中创建汽车模块的部分(文件)?
    • 确定 - 我已经添加了答案的链接
    • 在第二种解决方案的情况下,我认为我应该为 RSU 添加另一个模块类型和模块名称。我应该按照相同的步骤创建汽车模块吗?我的意思是,订阅上下文(在这种情况下,POI)和汽车模块创建中遵循的所有步骤?您能否指出从 TraCI 场景管理器的初始化过程开始的主要步骤及其相应的功能?我知道您已经阐明了步骤,但我无法指出哪个函数执行哪个步骤。
    • 我认为这样的教程不适合这里的可用空间。我建议您尝试第一个解决方案。
    • 我知道我问了太多问题 :)。我将暂时使用第一个解决方案,但将来我必须为汽车和 RSU 使用多种模块类型。我试图弄清楚汽车模块的创建是如何完成的,但无法弄清楚每个函数的执行顺序是什么以及每个函数的作用是什么。如果您能根据 TraCICommand 接口文件中使用的函数提及汽车模块的创建步骤,我将不胜感激。如果您愿意,我可以将此发布到一个新的单独问题中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多