意識していなくても、私たちは日常的にハンドアイキャリブレーションを使っています。
あらゆる物体を手でつかむといった作業から、さまざまな質感やサイズの物体を扱う作業、さらには裁縫のような繊細な器用さを必要とする作業まで、すべてにおいて「手」と「目」が正しくキャリブレーションされていることが前提となっています。
こうした作業を可能にしている主な要素は、次の4つです。
では、ハンドアイキャリブレーションがうまくいかないとどうなるのでしょうか?
Good Mythical Morning の動画では、世界が上下逆さまに見える特殊なメガネをかけて、水をボトルに注ぐという単純な作業を競っています。
ご覧の通り、彼らはボトルに水を入れるのに苦労しています。なぜなら、長年かけて身につけたハンドアイキャリブレーションをその場で再調整しなければならないからです。
彼らの視覚と腕が同じ座標系で連携できなくなっているため、ハンドアイキャリブレーションが正常に機能していないのです。
私たちは物体をつかむとき、次のような流れで処理を行っています。
目が物体の画像を捉える
脳がその画像を処理し、物体を認識し、腕や手に対して「どこへ動かし、どうつかむか」を指示する
この「目と手のキャリブレーション(eye-to-hand calibration)」によって、この一連の動作が可能になる
ここから、この「ハンドアイキャリブレーション」がロボット応用において何を意味するのか、という話につながっていきます。
ハンドアイキャリブレーションには2つの方式があり、どちらも Zivid のハンドアイキャリブレーションAPIでサポートされています。
多くのアプリケーション、特にロボットを用いるものにおいては、ハンドアイキャリブレーションは必須です。
これは統合を大幅に簡素化するだけでなく、多くの場合アプリケーションの精度も向上させます。
例えば、ターゲット物体がビン(箱)に入っており、その上に Zivid 3D カメラが設置され、ロボットとグリッパーがビンの横にあるとします。
アイ・トゥ・ハンドキャリブレーションを実行した後、3Dビンピッキングの処理は次のようになります。
Zividカメラがシーンの3D画像を取得します。出力は、色情報が1対1で対応した高精度なポイントクラウドです。
ポイントクラウド上で検出アルゴリズムを実行し、目的物の姿勢(ポーズ)を特定します。
これは通常、ピック位置とピック姿勢(向き)で構成されます。
アイ・トゥ・ハンドキャリブレーションを用いて、そのピック姿勢をロボットの座標系へ変換します。
アプリケーションはロボットのグリッパーを正しい姿勢へ移動させ、物体を把持できるようになります。
ハンドアイキャリブレーションはロボットとカメラを結びつける役割を持っています。
そのため、このキャリブレーションが正確であることが、自動化タスクを成功させるために不可欠であることがよく理解できます。
高精度な3Dカメラを使えば、空間内の対象物の位置を把握するために必要なのはスナップショット一枚だけであり、その後すぐにピッキングを行うことができます。
ハンドアイキャリブレーションとは、ロボットの姿勢と、それに対応するカメラの姿勢を用いて誤差を最小化する手法です。
ロボットの姿勢はロボットから直接取得され、カメラの姿勢はカメラ画像から計算されます。
このキャリブレーションの一般的な方法は2Dカメラに由来しており、2D姿勢推定を用います。
簡単に言えば、既知のキャリブレーション用物体を撮影し、カメラをキャリブレーションし、その後2Dから3Dの姿勢を推定します。
カメラキャリブレーションを経験したことがある人なら分かる通り、これは非常に難しい作業です。
まず、チェッカーボードのような良質なキャリブレーションターゲットを使用する必要があります。
これは、角から角までの距離が正確で、かつ完全に平坦であることを意味します。
次に、キャリブレーション対象をさまざまな距離や角度(キャリブレーションボリューム)で、適切に露出された状態で撮影する必要があります。
キャリブレーションボリューム全体にわたって画像を分散させ、カメラフレームの中心と端の両方を撮影することが、高精度なキャリブレーションを実現する鍵となります。
どちらのステップも簡単ではありませんが、特に2つ目は非常に難しいとされており、経験豊富なカメラキャリブレーションの専門家でさえ同意する点です。
Zividでは、すべての3Dカメラを工場出荷時にキャリブレーションしており、精度の高いカメラキャリブレーションを実現するために何千時間ものエンジニアリング作業を行っています。
では、すでに高精度なポイントクラウドを提供する3Dカメラがあるにもかかわらず、2Dカメラの再キャリブレーションや2D→3D姿勢推定を行う必要はあるのでしょうか?
結論から言えば、おそらくその必要はありません。
ZividのハンドアイキャリブレーションAPIは、工場でキャリブレーションされたポイントクラウドを使用してハンドアイキャリブレーションを計算します。
これにより、より良い結果が得られるだけでなく、必要な姿勢数も少なくて済みます。さらに重要なのは、その結果が再現性が高く、簡単に取得できるという点です。
以下のグラフは、キャリブレーションに使用する画像枚数に対する、典型的な回転誤差および並進誤差の変化を示しています。
ご覧の通り、典型的な改善として、並進誤差は約3倍、回転誤差は約5倍の向上が見られます。
ハンドアイキャリブレーションについての事前知識に関係なく、このトピックを興味深いと感じていただけたなら幸いです。
ご覧の通り、ハンドアイキャリブレーションは3Dビジョンとロボットを扱う上で重要な要素の一つです。
Zividの3Dハンドアイキャリブレーションは、このプロセスをより簡単かつ信頼性の高いものにします。
さらに知りたい場合は、ハンドアイキャリブレーションの仕組みや最適化方法を解説した短い動画シリーズをご覧ください。