使用2D相机和夹持器进行挑选和放置模拟-Naresh-02-27-2019
我想使用2D相机和夹具来做挑选和放置操作。我可以在RoboDK网站上查看类似的模拟(也在下载版本中),但我找不到任何关于构建它的文档/教程。如果我能得到它的教程(图形优先于编程),这将是非常有帮助的。
谢谢你!
Naresh
RE:使用2D相机和夹持器进行拾取和放置模拟-jccourtney-02-28-2019
我也想知道在哪里可以找到它。
RE:使用2D相机和夹持器进行拾取和放置模拟-艾伯特-03-05-2019
在RoboDK中,您可以使用以下选项模拟2D摄像机和3D深度摄像机:然而,图像处理需要使用第三方产品、您自己的图像处理算法或Python本身进行集成。举个例子,如果你打算创建自己的图像处理算法,OpenCV库将是一个很好的起点。或者,您可以找到适合行业的相机,如康耐视,Keyence, Sick, Ensenso,…
从RoboDK,您可以通过右键单击相机的模拟视图来保存图像,并保存图像以测试您的图像处理算法。支持保存图像的格式包括PNG、JPEG和TIFF。您还可以使用API打开一个新的模拟相机窗口并拍摄快照(附带的2个宏可以做到这一点)。当你右键单击相机窗口时,你可以看到相同的相机设置,可以通过API访问。所附宏中的注释可以帮助您设置,以便相机根据您的设置自动打开。
(附件= 188)
为了模拟目的,您可以执行以下操作之一:
- 提取相机应该提供给你的理想X,Y,Theta。建议将此作为确保您的选择和放置应用程序有意义的第一步。
- 通过应用图像识别算法模拟相机提供的X,Y,Theta值。
这两种操作都可以使用RoboDK API轻松实现自动化。这段代码提供了一个示例函数,用于等待零件通过传送带:
代码:
#模拟相机的行为(返回TX, TY和RZ) def WaitPartCamera (): if RDK.RunMode() == RUNMODE_SIMULATE: 如果这是真的: #纯模拟选项: #通过等待一个物体在相机区域内来模拟相机 而真正的: #遍历所有可以选中的对象: 对于check_objects中的部分: 计算零件相对于相机参考的位置 part_pose = invH(camera_pose_abs) * part.PoseAbs() Tx,ty,tz,rx,ry,rz = pose_2_xyzrpw(part_pose) # X,Y,Theta = tx,ty,rz -> tx,ty单位为mm, rz单位为度 如果abs(tx) < 400且ty < 50且abs(tz) < 400: 打印('部分检测到:TX,TY,TZ=%.1f,%.1f,%. 1f,%。1f' % (tx,ty,rz)) 返回tx ty rz 其他: #应用图像处理(RoboDK内模拟): image_file = RDK.getParam('PATH_OPENSTATION') + "/Image-Camera-Simulation.png" print("Saving camera snapshot to file:" + image_file) RDK.Cam2D_Snapshot (image_file)
在这里实现你的图像处理: 返回ImageProcessingAlgorithm (image_file)
其他: #图像处理应该发生在真正的相机上 返回WaitPartRealCamera ()
返回0,0,0
你会在下面的示例项目中找到一个类似的函数: 例02-3 -用2D camera.rdk选择并放置 (在PartsToPallet程序内)
RE:使用2D相机和夹持器进行拾取和放置模拟-Naresh-03-08-2019
谢谢你的帮助。谢谢你! 我会试着回来的。
问候
RE:使用2D相机和夹持器进行拾取和放置模拟-杰夫-12-15-2020
(03-05-2019, 03:53 pm)艾伯特写道:在RoboDK中,您可以使用以下选项模拟2D摄像机和3D深度摄像机:然而,图像处理需要使用第三方产品、您自己的图像处理算法或Python本身进行集成。举个例子,如果你打算创建自己的图像处理算法,OpenCV库将是一个很好的起点。或者,您可以找到适合行业的相机,如康耐视,Keyence, Sick, Ensenso,…
从RoboDK,您可以通过右键单击相机的模拟视图来保存图像,并保存图像以测试您的图像处理算法。支持保存图像的格式包括PNG、JPEG和TIFF。您还可以使用API打开一个新的模拟相机窗口并拍摄快照(附带的2个宏可以做到这一点)。当你右键单击相机窗口时,你可以看到相同的相机设置,可以通过API访问。所附宏中的注释可以帮助您设置,以便相机根据您的设置自动打开。
为了模拟目的,您可以执行以下操作之一:
- 提取相机应该提供给你的理想X,Y,Theta。建议将此作为确保您的选择和放置应用程序有意义的第一步。
- 通过应用图像识别算法模拟相机提供的X,Y,Theta值。
这两种操作都可以使用RoboDK API轻松实现自动化。这段代码提供了一个示例函数,用于等待零件通过传送带:
代码:
#模拟相机的行为(返回TX, TY和RZ) def WaitPartCamera (): if RDK.RunMode() == RUNMODE_SIMULATE: 如果这是真的: #纯模拟选项: #通过等待一个物体在相机区域内来模拟相机 而真正的: #遍历所有可以选中的对象: 对于check_objects中的部分: 计算零件相对于相机参考的位置 part_pose = invH(camera_pose_abs) * part.PoseAbs() Tx,ty,tz,rx,ry,rz = pose_2_xyzrpw(part_pose) # X,Y,Theta = tx,ty,rz -> tx,ty单位为mm, rz单位为度 如果abs(tx) < 400且ty < 50且abs(tz) < 400: 打印('部分检测到:TX,TY,TZ=%.1f,%.1f,%. 1f,%。1f' % (tx,ty,rz)) 返回tx ty rz 其他: #应用图像处理(RoboDK内模拟): image_file = RDK.getParam('PATH_OPENSTATION') + "/Image-Camera-Simulation.png" print("Saving camera snapshot to file:" + image_file) RDK.Cam2D_Snapshot (image_file)
在这里实现你的图像处理: 返回ImageProcessingAlgorithm (image_file)
其他: #图像处理应该发生在真正的相机上 返回WaitPartRealCamera ()
返回0,0,0
你会在下面的示例项目中找到一个类似的函数: 例02-3 -用2D camera.rdk选择并放置 (在PartsToPallet程序内) 艾伯特你好, 我已经知道如何添加相机和获取图像文件。是否有可能从相机的功能获得numpy数组来检索视图?我想研究机器人操作中的强化学习。谢谢~
RE:使用2D相机和夹持器进行拾取和放置模拟-居民-01-11-2021
(12-15-2020, 06:31 am)杰夫写道:艾伯特你好, 我已经知道如何添加相机和获取图像文件。是否有可能从相机的功能获得numpy数组来检索视图?我想研究机器人操作中的强化学习。谢谢~ 我也希望能够更直接地访问相机馈送,而不是保存图像。请添加此功能:)
RE:使用2D相机和夹持器进行拾取和放置模拟-艾伯特-01-11-2021
这是不可能得到一个窗口的视频提要。相反,您可以使用屏幕捕捉软件(例如OBS software)来实现这一点。
使用RoboDK API,您可以拍摄主窗口或模拟相机窗口的快照。这里有一个这样做的例子: https://github.com/RoboDK/Plug-In-Interface/blob/master/PluginAppLoader/Apps/Snapshot/TakeSnapshot.py
RE:使用2D相机和夹持器进行拾取和放置模拟-fha969-09-27-2021
(02-28-2019, 07:09)jccourtney写道:我也想知道在哪里可以找到它。 艾伯特你好, 我想购买3D相机: Robodk支持像intel realsense那样的3D摄像头吗?如果有,有什么要求,如何连接?- Robodk是否能够实时接收来自相机的图像(2D/3D)? 先谢谢你,
|