simulation - 将 omnet++ 时钟与系统时钟对齐
问题描述
我正在尝试将 omnet++ 与 3d 机器人模拟器集成,这大致就是我所描绘的。
所以机器人模拟器中有许多对象,它们使用 802.11 相互通信,将由 omnet++ 模拟。omnet++中的每个节点对应机器人模拟器中的每个对象,一个对象的运动会与omnet++中对应的节点同步。
但是由于 omnet++ 是一个离散事件模拟器,我需要处理 omnet++ 和机器人模拟器之间的时钟不匹配问题。
我知道 omnet++ 有用于将模拟时钟与挂钟同步的 cRealTimeScheduler 类,但我不确定这是否能满足我的要求。
在网络模拟方面,我是个菜鸟,所以我想知道这是否可能。使用 cRealTimeScheduler 类是否会处理时钟同步?还是我需要采取不同的策略?(不同的调度程序,甚至不同的模拟器?)
任何帮助将不胜感激。谢谢你。
解决方案
如果机器人模拟器本身是实时运行的,那么您可以使用 cRealTimeScheduler 方法。cRealTimeScheduler 将与挂钟时间同步。如果机器人模拟器也在实时运行,那么两者也将隐式同步。
如果机器人模拟器有自己的模拟时间(即可以比实时运行更快),那么您应该创建自己的调度程序类来同步两个模拟。这称为协同仿真,其中两个仿真串联。Veins(sumo + omnet)也在 Sumo(汽车交通模拟器)和 omnet(网络模拟器)一起工作的情况下这样做。
您尝试实现的目标是可能的,但是我对机器人模拟器部分不熟悉,但是只要另一个模拟器也在与消息进行通信,就是离散时间点,您可以从机器人模拟器中获取模拟时间,你应该没事。
推荐阅读
- azure - 修改 Azure App Linux 服务的 nginx.conf
- c# - HttpContext.User.Name 可用于 IIS 调试,但在部署到 azure 时不起作用
- android - 如何从文件uri中提取文件名
- javascript - 如何删除jspdf自动表上的空间
- python - Pandas Groupby 列并获得频率为 0
- azure-cosmosdb - 使用文档 API 更新 cosmos db gremlin 顶点
- android - Android 检测到不成功的电话并稍后再试
- mysql - 一篇文章后无法插入数据
- javascript - Javascript如何使用reduce从嵌套对象中获取属性值的总和?
- vb.net - 有一个带有多个参数的命令