机器人视觉

RoboDK提供多种实用工具来模拟、开发和部署计算机视觉系统。通过RoboDK可以模拟2D和3D相机来开发和训练计算机视觉算法,同时支持集成真实2D和3D相机设备。

本指南将演示相机仿真的基本操作流程。

Note:更多API应用案例可参考文档:https://robodk.com/doc/cn/PythonAPI/examples.html#camera-2d

Computer Vision - 图片 1

仿真相机系统

仿真相机可实时显示镜头捕捉画面。支持自定义传感器尺寸、像素大小、视场角等参数,并能将相机固定在空间任意位置或安装在机械臂上。

添加相机视图

添加相机需要将其固定在一个锚点上,以确定其位置。这通常需要使用参考坐标系。

1.在菜单中选择:程序➔ 添加参考坐标系创建新坐标系。更多信息请参阅入门指南章节。

2.将坐标系置于目标位置:XYZ坐标为镜头中心,Z+轴指向拍摄方向,Y+轴朝下。

3.选择:连接➔ 模拟2D相机并选择参考坐标系。

此时锚点上已绑定默认相机。

Tip:当锚点移动时相机位置自动更新,可轻松实现腕部相机的动态仿真。

Tip:右键相机,选择相机位置可修改锚点。

相机预览窗口

相机预览窗口可让你看到相机所看到的内容。添加新相机时,此窗口会自动打开。

要重新打开相机预览窗口,只需双击工作站中的摄像机即可。也可以在工作站中右键单击它,然后选择:显示相机。预览窗口可以调整大小、最小化或关闭(更多选项请参阅下一节)。

Computer Vision - 图片 2

预览窗口打开时,3D环境中也会显示相机工作区。你可以通过右键单击摄像机,选择:显示相机工作区。

相机参数设置

通过相机设置,你可以自定义相机的参数,从而在 RoboDK 的模拟环境中获得真实的相机视图。

修改相机的一些参数设置,请在工作站中右击相机,然后选择:相机设置。RoboDK 为新添加的相机提供以下默认设置:

摄像机:提供锚点名称(根据你的参考坐标系名称变化,比如Frame 1)。

焦距 (mm):单位是毫米(5.00),影响像素尺寸。

像素尺寸 (μm):单位为微米(2.481)。更改该值会影响视野。

视野(度):单位为度(30.0)。这会影响相机可感知区域的大小。更改该值会影响像素大小。

工作距离 (mm):单位为毫米(2000.0)。这是相机可以感知环境的距离,超过这个距离的物体将不会成为图像的一部分。

固定传感器尺寸:如果不选中,相机传感器尺寸(或分辨率)由相机预览窗口的大小来设置,用户可以调整预览窗口的大小。

摄像机传感器尺寸:对于固定传感器尺寸,以像素为单位提供相机的宽度和高度。调整预览窗口大小不会影响尺寸。

允许调整窗口大小:允许用户在不影响传感器尺寸的情况下调整预览窗口的大小。例如,将窗口大小调整为 720p,同时保持分辨率为 4K。

透视图:取消选中此项将把相机变成正投影相机,消除透视。

视图类型:确定相机视图类型,如彩色、灰度或深度。视图类型将根据相关数据改变输出图像。

停靠视图:将预览窗口嵌入工具栏。

自定义光源:覆盖默认环境光/漫反射/镜面反射参数(仅彩色模式有效)。

背景颜色:无物体区域的填充颜色。

Computer Vision - 图片 3

通过API获取仿真图像

支持通过API获取所有视图类型的图像数据(8位彩色/灰度图,32/8位深度图)。

访问模拟相机的数据,可以通过第三方图像资源库或自己的图像资源库进行外部处理。

虽然 RoboDK 没有提供自己的成像资源库,也没有与之关联,但我们的 Python API 提供了处理 2D 和 3D 图像数据的示例代码。涉及以下主题:

实时图像处理

棋盘格标定针孔相机

基于标记物的位姿估计

增强现实图像叠加

条形码/二维码识别

特征检测(斑点、轮廓、图像矩等)

深度图转点云/三维重建

访问RoboDK的Python API 示例,点击此链接:https://robodk.com/doc/cn/PythonAPI/examples.html

手眼校准

用于校准相机相对于机械臂法兰或工具的位姿关系。

RoboDK支持完整的手眼标定流程仿真,该流程同样适用于真实设备标定。

Computer Vision - 图片 4

完整案例参考此API示例: https://robodk.com/doc/cn/PythonAPI/examples.html#camera-hand-eye-calibration

应用案例

以下典型场景展示计算机视觉与制造流程的集成方案(多数案例需配合代码实现):

条码识别

通过 RoboDK 中的模拟相机,支持QR码/EAN-13/UPC-A等条码的自动识别:

你可以在 RoboDK 中拖放条形码图像,并创建一个指向你的条形码的新模拟相机。

将条码图像拖入RoboDK工作区

创建指向条码的仿真相机

你可以在 RoboDK Python API 部分找到示例:https://robodk.com/doc/cn/PythonAPI/examples.html#qr-codes-and-barcodes

Computer Vision - 图片 5

物体检测

你可以通过 RoboDK 中的模拟相机获得物体位置的估计值(2D 位姿)。

你可以在 RoboDK API 示例部分找到该示例:https://robodk.com/doc/cn/PythonAPI/examples.html#object-detection

Computer Vision - 图片 6