ロボットビジョンにおいて、キャリブレーションは一度やれば終わりという作業ではありませんでした。部品の高さが変わるたびにやり直す必要がありました。AimFactoryCore は、この繰り返しを計算で置き換えます。
なぜ高さが変わるとピックアップがずれるのか
カメラは上から見下ろし、ピクセルを mm に変換します。この変換が正確なのは、キャリブレーションを行った高さでだけです。部品がそれより高いか低いと、カメラと部品の距離が変わり、同じピクセルが別の mm を指すようになります。
偏差は視野の中央では小さく、端に行くほど大きくなります。そのため、高さの異なる部品を同じキャリブレーションでピックすると、ピックアップ領域の外周にある部品からずれ始めます。
これまでは、高さごとにキャリブレーションを別々に行い、そのデータを何組も蓄えておくのが答えでした。部品の種類が増えるほど、その組数も増えていました。
AimFactoryCore はこう処理します

キャリブレーションウィンドウのハードウェア段階で、カメラの作動距離を実測値で入力します。この値があれば、ソフトウェアが高さに応じた倍率の変化を投影式で計算します。回転が混ざる場合まで同じ式で処理するため、軸ごとに補正係数を別々に実測する必要はありません。
製品高さは、レシピの中にカメラごとに保存されます。部品を変えればレシピが変わり、高さも一緒に変わります。Point Tool 画面の製品高さカードはこの値をそのまま表示し、修正はキャリブレーションウィンドウでのみ行えるようにしています。生産中に値が誤って変わることを防ぐためです。
結果は画面が出す値で確認します。キャリブレーション結果の段階で RMS 値と「良好・注意・不良」の判定が出て、平均・最小・最大誤差が mm で表示されます。カメラが傾いて設置されていて端の誤差が大きくなる状況であれば、再設置を推奨する警告も同じ画面に表示されます。
レンズ歪みは先に取り除きます

高さ補正の前にレンズ補正があります。ドットボードを撮影すると、ソフトウェアがドットを自動検出してドットごとの状態を色で表示し、9 点の位置を十字で捉えます。

レンズ補正パネルには、補正前後の格子と残差、カバレッジ、検出されたドット数が表示されます。残差がピクセルで mm にしてどれだけかも一緒に示します。最終判断は結果の段階で行います。同じ 9 点を、補正なしで 1 回、補正を適用して 1 回それぞれフィッティングし、RMS を比較します。上の画面のレンズはその差が 0.001mm だったため、ソフトウェアは「改善はわずか、未使用に切り替えても問題なし」と判定しました。不要な補正は不要だと知らせます。
誤って入れたポイントは画面が指摘します

9 点のうち 1 つを誤って入れると判定が「不良」になり、各ポイントの横に誤差が mm で付きます。どの点がどれだけずれているかが見えるので、その点だけ撮り直せば済みます。基準がロボット座標に残っているからこそ、たどり直せる確認です。
ないものは、ないと知らせます
キャリブレーションデータにカメラ情報、レンズ補正、作動距離のうち欠けている項目があれば「未確認」と表示し、何が欠けているのかを並べて示します。作動距離がなければ高さ補正と傾き計算ができないことも、その場で知らせます。以前のデータを移してきた現場で原因不明の偏差が生じることを減らすための仕組みです。
どのような現場に必要か
- 1 つのラインで高さの異なる複数の部品を交互に生産する多品種の現場
- 視野を広く取り、ピックアップ領域の外周まで使うフィーディング構成
- 部品が変わるたびにキャリブレーション担当者を待っていた現場
精度は一か所からは生まれません
高さ補正は、AimFactoryCore が誤差を抑える複数の段階のひとつです。ロボットの絶対座標を基準とする位置合わせ、レンズ歪み補正、ツールが機構的にずれている分を角度ごとに補正するツールキャリブレーション、ロボットプログラムを開かずにビジョン側で入れるピックオフセットが一緒に働きます。この構造は技術ページで別途まとめています。
