drake - 如何确保在德雷克中以请求的时间间隔调用 DoPublish
问题描述
我有LeafSystem
一个DeclarePeriodicPublish(0.07, 0)
。
这LeafSystem
会从 rgbd 相机读取数据,进行一些处理并将结果保存到LeafSystem
实例的属性中。还声明了多个输出端口,它们只是将LeafSystem
属性中保存的值复制到输出中。
如果我LeafSystem
自己对此进行模拟,则行为与预期一致,并且DoPublish
大约每 0.07 秒被调用一次。
但是,如果我将它LeafSystem
连接到 custom manipulation_station
,那么DoPublish
每 0.3 秒才会被调用一次。
我不确定如何调试此问题。我在模拟过程中监控了 CPU 使用率,python 命令甚至没有使用一半的内核数,所以我猜 CPU 抖动不是这里的问题。
关于如何解决这个问题的任何建议?read data -> processing -> publish data to other LeafSystems
或者也许是在德雷克中实现这种行为的更好方法?
谢谢!
2021 年 6 月 4 日编辑:
用例如下。我的管道是:
从真实的 rgbd 相机捕获数据 -> 执行一些处理 -> 在模拟中向机器人发送命令。
在演示期间,我想将模拟中的机器人视频与捕获的 rgbd 流并排显示。
目前正在通过记录计算机屏幕来捕获模拟中的机器人。
但是,将传入的 rgbd 流渲染到屏幕太慢了。所以我将 rgbd 帧及其时间戳保存在计算机内存中。记录机器人行为后,我使用时间戳将 rgbd 流重新渲染为视频,然后将此视频与机器人的记录合并以形成一个最终视频。
两个时间戳之间的持续时间为 0.3 秒。但是,每个 rgbd 帧的处理只需要 0.05 秒。
时间戳是使用 python 本机 time.time() 函数获得的。
解决方案
这听起来像是一个错误。LeafSystem
声明周期性事件的A应该在常规期间调用该事件,而不管其余部分Diagram
是什么。
有什么方法可以分享你的代码吗?
推荐阅读
- r - 如何使线条片段与ggplot中的单个点匹配
- python - 将组附加到熊猫数据框时导致值错误
- python - 如何输出字典值的排列
- html - CSS关键帧动画适用于Chrome桌面但不适用于移动设备?
- html - 让图像占据改变大小的 div 的全部高度?
- node.js - 在 React 中存储 Express 会话 ID
- r - 使用 lapply 按列对数据框列表进行分组
- node.js - 如何修复“× TypeError: Object(...) is not a function”?
- javascript - 将来自 google webapp 的字符串存储到数组中
- mongodb - Mongo DB - 过滤嵌套数组中的数据元素