跳到主要内容

ChArUco 相机校准

为什么这很重要?

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

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

什么是相机校准?

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

1. 相机矩阵

相机矩阵,通常表示为K,是一个3x3矩阵,描述了相机坐标系中的3D点如何投影到2D图像平面上:

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

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

fx和fy是以像素为单位计算的焦距

2. 畸变系数

我们计算5个畸变系数:

[k1, k2, p1, p2, k3]

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

p1、p2是切向畸变系数,由于镜头与图像平面不平行而产生

执行ChArUco校准

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

信息

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

准备校准板

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

ChArUco板示例

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

捕获校准图像

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

校准示例

校准

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