RoboDK提供多种实用工具来模拟、开发和部署计算机视觉系统。通过RoboDK可以模拟2D和3D相机来开发和训练计算机视觉算法,同时支持集成真实2D和3D相机设备。
本指南将演示相机仿真的基本操作流程。
Note:更多API应用案例可参考文档:https://robodk.com/doc/cn/PythonAPI/examples.html#camera-2d

仿真相机可实时显示镜头捕捉画面。支持自定义传感器尺寸、像素大小、视场角等参数,并能将相机固定在空间任意位置或安装在机械臂上。
添加相机需要将其固定在一个锚点上,以确定其位置。这通常需要使用参考坐标系。
1.在菜单中选择:程序➔ 添加参考坐标系创建新坐标系。更多信息请参阅入门指南章节。
2.将坐标系置于目标位置:XYZ坐标为镜头中心,Z+轴指向拍摄方向,Y+轴朝下。
3.选择:连接➔ 模拟2D相机并选择参考坐标系。
此时锚点上已绑定默认相机。
Tip:当锚点移动时相机位置自动更新,可轻松实现腕部相机的动态仿真。
Tip:右键相机,选择相机位置可修改锚点。
相机预览窗口可让你看到相机所看到的内容。添加新相机时,此窗口会自动打开。
要重新打开相机预览窗口,只需双击工作站中的摄像机即可。也可以在工作站中右键单击它,然后选择:显示相机。预览窗口可以调整大小、最小化或关闭(更多选项请参阅下一节)。

预览窗口打开时,3D环境中也会显示相机工作区。你可以通过右键单击摄像机,选择:显示相机工作区。
通过相机设置,你可以自定义相机的参数,从而在 RoboDK 的模拟环境中获得真实的相机视图。
修改相机的一些参数设置,请在工作站中右击相机,然后选择:相机设置。RoboDK 为新添加的相机提供以下默认设置:
●摄像机:提供锚点名称(根据你的参考坐标系名称变化,比如Frame 1)。
●焦距 (mm):单位是毫米(5.00),影响像素尺寸。
●像素尺寸 (μm):单位为微米(2.481)。更改该值会影响视野。
●视野(度):单位为度(30.0)。这会影响相机可感知区域的大小。更改该值会影响像素大小。
●工作距离 (mm):单位为毫米(2000.0)。这是相机可以感知环境的距离,超过这个距离的物体将不会成为图像的一部分。
●固定传感器尺寸:如果不选中,相机传感器尺寸(或分辨率)由相机预览窗口的大小来设置,用户可以调整预览窗口的大小。
●摄像机传感器尺寸:对于固定传感器尺寸,以像素为单位提供相机的宽度和高度。调整预览窗口大小不会影响尺寸。
●允许调整窗口大小:允许用户在不影响传感器尺寸的情况下调整预览窗口的大小。例如,将窗口大小调整为 720p,同时保持分辨率为 4K。
●透视图:取消选中此项将把相机变成正投影相机,消除透视。
●视图类型:确定相机视图类型,如彩色、灰度或深度。视图类型将根据相关数据改变输出图像。
●停靠视图:将预览窗口嵌入工具栏。
●自定义光源:覆盖默认环境光/漫反射/镜面反射参数(仅彩色模式有效)。
●背景颜色:无物体区域的填充颜色。

支持通过API获取所有视图类型的图像数据(8位彩色/灰度图,32/8位深度图)。
访问模拟相机的数据,可以通过第三方图像资源库或自己的图像资源库进行外部处理。
虽然 RoboDK 没有提供自己的成像资源库,也没有与之关联,但我们的 Python API 提供了处理 2D 和 3D 图像数据的示例代码。涉及以下主题:
●实时图像处理
●棋盘格标定针孔相机
●基于标记物的位姿估计
●增强现实图像叠加
●条形码/二维码识别
●特征检测(斑点、轮廓、图像矩等)
●深度图转点云/三维重建
访问RoboDK的Python API 示例,点击此链接:https://robodk.com/doc/cn/PythonAPI/examples.html
用于校准相机相对于机械臂法兰或工具的位姿关系。
RoboDK支持完整的手眼标定流程仿真,该流程同样适用于真实设备标定。

完整案例参考此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

你可以通过 RoboDK 中的模拟相机获得物体位置的估计值(2D 位姿)。
你可以在 RoboDK API 示例部分找到该示例:https://robodk.com/doc/cn/PythonAPI/examples.html#object-detection
