首页 > 解决方案 > 将 omnet++ 时钟与系统时钟对齐

问题描述

我正在尝试将 omnet++ 与 3d 机器人模拟器集成,这大致就是我所描绘的。

所以机器人模拟器中有许多对象,它们使用 802.11 相互通信,将由 omnet++ 模拟。omn​​et++中的每个节点对应机器人模拟器中的每个对象,一个对象的运动会与omnet++中对应的节点同步。

但是由于 omnet++ 是一个离散事件模拟器,我需要处理 omnet++ 和机器人模拟器之间的时钟不匹配问题。

我知道 omnet++ 有用于将模拟时钟与挂钟同步的 cRealTimeScheduler 类,但我不确定这是否能满足我的要求。

在网络模拟方面,我是个菜鸟,所以我想知道这是否可能。使用 cRealTimeScheduler 类是否会处理时钟同步?还是我需要采取不同的策略?(不同的调度程序,甚至不同的模拟器?)

任何帮助将不胜感激。谢谢你。

标签: simulationomnet++

解决方案


如果机器人模拟器本身是实时运行的,那么您可以使用 cRealTimeScheduler 方法。cRealTimeScheduler 将与挂钟时间同步。如果机器人模拟器也在实时运行,那么两者也将隐式同步。

如果机器人模拟器有自己的模拟时间(即可以比实时运行更快),那么您应该创建自己的调度程序类来同步两个模拟。这称为协同仿真,其中两个仿真串联。Veins(sumo + omnet)也在 Sumo(汽车交通模拟器)和 omnet(网络模拟器)一起​​工作的情况下这样做。

您尝试实现的目标是可能的,但是我对机器人模拟器部分不熟悉,但是只要另一个模拟器也在与消息进行通信,就是离散时间点,您可以从机器人模拟器中获取模拟时间,你应该没事。


推荐阅读