线程评级:
  • 0 (s) - 0平均投票
  • 1
  • 2
  • 3
  • 4
  • 5
快速阅读整个帧树的方法
# 1
你好,

我想访问整个车站帧图在Python API。我注意到一个函数setpos为提高效率设置多个姿势。有什么类似的让所有站的姿势吗?

谢谢你!
瑞克
# 2
最快的方法来设置多个姿势会关掉渲染和更新所需的所有姿势。然后,您可以将呈现。
# 3
对不起我的问题还不清楚。我想打电话给getPose非常快。现在我有大约70件物品在现场,每次调用需要~ 0.05秒,所以需要在3.5秒内查找整个场景帧树。
# 4
你用的什么编程语言?你能共享一个示例RDK项目和代码吗?

我们可以帮助你提高速度。
# 5
代码:
def publish_transform(自我,单品:robolink.Item):
如果项目。类型= = robolink.ITEM_TYPE_ROBOT:
parent_tform_item = item.PoseFrame ()
elif项目。类型= = robolink.ITEM_TYPE_TOOL:
parent_tform_item = item.PoseTool ()
其他:
parent_tform_item = item.Pose ()

parent_name = item.Parent () . name ()
child_name = item.Name ()
# self.tf_broadcaster。sendTransform (parent_tform_item parent_name child_name)

def publish_transforms_recursive(自我,单品:robolink.Item):
儿童在item.Childs ():
self.publish_transform(孩子)
self.publish_transforms_recursive(孩子)

def publish_all_frames(自我):
base_item = self.link.Item (get_root_frame_name ())
self.publish_transforms_recursive (base_item)

以上是一些示例代码。我没有站文件我可以分享,但上面的代码应该为任何站工作。
# 6
我不知道为什么你正在经历这样一个延迟造成()。我尝试以下代码的执行与50 +项目。


代码:
项= {}
在RDK.ItemList项目():
项目(项目)= item.Pose ()

你能使用pstats查找瓶颈吗?
有没有可能你不止一次递归过程项目?
找到有用的信息通过访问我们的关于RoboDK及其特性在线文档看我们的教程YouTube频道
# 7
(10-14-2022,29)山姆写道:我不知道为什么你正在经历这样一个延迟造成()。我尝试以下代码的执行与50 +项目。


代码:
项= {}
在RDK.ItemList项目():
项目(项目)= item.Pose ()

你能使用pstats查找瓶颈吗?
有没有可能你不止一次递归过程项目?

嗨,山姆,

谢谢你的回应。我将尝试运行一些测试结束。

调用的速度有多快item.Pose吗?这叫以任何方式的速度是一个车站的物品数量的函数?我有大约300件物品在车站,但~ 250是看不见的。我必须把这些由于一些robodk问题与纹理在Linux中动态加载文件。基本上我创建一个默认的站在窗户和移动物体时我希望是必需的。这就是为什么我做一些递归调用,而不是阅读每一项像你上面显示。我只关心下的项目link.Item (get_roof_frame_name ())树的分支。
# 8
另一件事。刚刚看到Event_Loop例子,看起来很有趣。https://github.com/RoboDK/RoboDK-API/blo...nt_Loop.py

很多项目在我的画面是静止的。EVENT_ITEM_MOVED_POSE事件看起来很酷但是有什么办法可以告诉哪项移动?谢谢!
# 9
04:13点(10-14-2022)rshanor写道:另一件事。刚刚看到Event_Loop例子,看起来很有趣。https://github.com/RoboDK/RoboDK-API/blo...nt_Loop.py

很多项目在我的画面是静止的。EVENT_ITEM_MOVED_POSE事件看起来很酷但是有什么办法可以告诉哪项移动?谢谢!

我最终解决问题通过设置下面的国旗。
代码:
robolink.Robolink。NODELAY = True
链接= robolink.Robolink (robodk_ip)

这加快API调用20 x 100 x
条目的姿势(item.Pose())可能会稍慢,如果你有许多对象时使用安全模式选项。安全模式选项意味着RoboDK将检查您提供的指针对所有可用项目存在于您的项目。

可以通过删除速度这个安全模式选项:
代码:
robolink.Robolink。SAFE_MODE = 0
链接= robolink.Robolink (robodk_ip)

有关的事件,当你得到一个新的事件你也会收到与该事件相关联的项目(项目变量在该示例中,您指出)。请注意,事件通道应该是一个单独的Robolink对象,它只应该用于侦听事件。有一个类似的例子在c# API:
https://github.com/RoboDK/RoboDK-API/blo...K.cs L2807

谢谢你的反馈关于没有延迟选择!我理解这只适用于Linux。




用户浏览这个线程:
1客人(年代)

Baidu
map