跳到主要内容

ChArUco 相机标定

为什么这很重要?

完全标定的相机将提供更准确的2D和3D测量。这对于任何不基于"伺服"到十字准线的任务都很有用。

话虽如此,我们建议尽可能多地使用"伺服"方法。它快速、精确,适用于物体获取、瞄准和目标对准等任务。除非您确定需要更高的精度,否则不用担心标定。每个LL设备都带有默认标定,这对大多数使用场景都能提供相当好的结果

"伺服"是指转动机器人直到目标与可配置的"十字准线"完全对齐的过程。这是处理机器人视觉问题最简单,在很多情况下也是最可靠的方法。

什么是相机标定?

内参标定是确定以下两个组件的过程:

1. 相机矩阵

相机矩阵,通常表示为K,是一个3x3矩阵,描述了镜头和传感器如何将3D世界转换为2D图像。

[fx  0   cx]
[0 fy cy]
[0 0 1]

cx和cy是主点/主像素的坐标。主点/主像素是与光轴/镜头中心直接对齐的像素。在制造过程中,相机镜头几乎永远不会与图像传感器的中心完全对齐。了解哪个像素是真正的"中心"像素至关重要

fx和fy是以像素为单位计算的焦距。fx和fy帮助我们理解相机的视场/变焦级别。

2. 畸变系数

我们计算5个畸变系数:

[k1, k2, p1, p2, k3]

k1、k2、k3是径向畸变系数,会导致直线看起来弯曲。

p1、p2是切向畸变系数,由镜头与图像平面不平行造成

执行ChArUco标定

Limelight的ChArUco标定设计得尽可能无缝和可靠。阅读以下步骤,然后观看下面的视频,了解如何标定相机以提高精度。

信息

您只需要在一个分辨率下进行标定(我们建议LL3使用1280x960,LL3G使用1280x800)。内参会自动缩放以匹配您管道选择的分辨率,而畸变系数在固定纵横比和FOV的情况下与分辨率无关。硬件变焦管道和500万像素管道是唯一不会使用自定义标定的管道。

准备标定板

您可以使用任何笔记本电脑屏幕来标定相机。但为了获得最高精度,我们建议购买这个来自calib.io的800mmx600mm粗糙标定板

ChArUco标定板示例

  1. 打印ChArUco标定板或在大型笔记本电脑或计算机屏幕上使用标定板图像。使用我们下载页面上的标定板,或生成您自己的标定板
  2. 通过将一行中黑色方格的总数和ArUco标记的总数相加来找到网格的"宽度"(默认Limelight标定板为11)。
  3. 通过将一列中黑色方格的总数和ArUco标记的总数相加来找到网格的"高度"(默认Limelight标定板为8)。
  4. 通过测量方格和标记的边长(以毫米为单位)来确认"方格尺寸"和"标记尺寸"测量值。
    • 方格尺寸和标记尺寸的测量至关重要,请使用卡尺。
  5. 注意字典类型。下载页面的默认标定板使用5x5_100字典。

捕获标定图像

  1. 确保您的标定板尽可能平整。
    • 如果标定板不平整,则不应进行标定。您可以从calib.io购买专用标定板,或将打印的标定板固定在写字板上。
  2. 打开机器人并访问Limelight网页界面。
  3. 创建一个1280x960的AprilTag管道。
  4. 通过将"输入"源类型从"相机"更改为"快照"并点击"删除所有快照"来删除所有保存的快照。
  5. 将"输入"源类型改回"相机"。
  6. 至少捕获25张ChArUco标定板的快照开始。一旦您熟悉了这个过程,您会想要回来捕获至少50张图像。
  7. ChArUco标定相对于标准棋盘格标定的主要优势在于即使相机只能看到部分标定板也能工作。充分利用这一优势很重要。
  8. 您的图像应该具有以下特质的良好组合:
    • 标定板占据图像的大部分区域。
    • 标定板延伸超过图像的至少一个边缘或角落(这将有助于计算图像边缘周围的畸变)。
    • 标定板经常放置在具有透视变形的位置(标定板不应与图像平面平行)。
    • 争取标定板位置、视角和覆盖范围的广泛多样性。
    • 50%的图像应该展示明显的透视缩短。这是近处标记看起来比远处标记更大的效果。以下截图中的第一张和最后一张图像展示了透视缩短

标定示例

标定

  1. 导航到"标定"选项卡。它是垂直侧边栏中的第三个选项卡。
  2. 输入在"准备标定板"步骤中找到的五个值。
  3. 点击"使用快照标定"按钮。该过程可能需要一到两分钟才能完成。
  4. 成功后,"最新标定结果"卡片将显示最新的标定结果。
  5. 检查"最新标定结果"卡片是否显示合理的结果,重投影误差较低(理想情况下小于1)。
  6. 下载最新的标定结果并上传到"custom - file"标定槽。
  7. 现在您应该看到三个填充的标定结果卡片。
  8. 将您的"首选标定"更改为"custom - file"以使用您的自定义标定结果。所有管道都将使用您的标定结果。
  9. 一旦您熟悉了这个过程,考虑捕获更多的截图并重新标定。