オーバーヘッドの姿勢(ワールド座標系でx、y、zおよび回転:Rx、Ry、Rz)を取得したいと思いますカメラ。 ChorUcoキャリブレーションボードをロボットアーム(これはhttps://www.youtube.com/watch?v=8q99dUPYCPsのように)で動かすことで、多くのオブジェクトポイントとイメージポイントを得ました。そのため、私はすでにすべてのオブジェクトポイントの正確な位置を持っています。OpenCV SolvePnPによるオーバーヘッドカメラの姿勢推定で数センチメートルの高さになる
solvePnP
に多くのポイントを与えるために、最初の検出されたパターン(ChArUcoボード)を最初のオブジェクトとして設定し、オブジェクト座標系の原点として使用しました。次に、検出されたオブジェクトポイント(第2パターンから最後まで)を最初に検出されたオブジェクトポイントの座標系(オブジェクトフレームの原点が第1オブジェクトの原点)に追加しました。
私はカメラとオブジェクトの座標フレームの間の変換を取得した後、私はその変換に基づいてカメラのポーズを計算しました。
結果は、最初はかなり良い見えたが、私は定規や巻尺を使用して、カメラの絶対的なポーズを測定したとき、私は外因校正結果は、(z方向のために15-20ミリオフだったことに気づきましたカメラの高さ)、他のもの(x、y、Rx、Ry、Rz)はほぼ正しいですが。ロボットアームを違う方向に動かすことで対象点の範囲を変えたとしても結果は同じでしたが、常に高さに対して数センチ離れていました。
誰も以前に同様の問題が発生しましたか?私は何かを試してみたいと思います。深さ方向(z)が不正確な場合のよくある間違いは何ですか?
オブジェクトからカメラの一部までの距離を正確に測定しますか?レンズ?カメラ内部の光感知イメージセンサー?あなたのカメラの姿勢はどれですか? – mikkola
レンズから測定しました。 – kangaroo
多くの時間を費やした後、私はカメラからの出力がデフォルトで修正されていることに気付きました。未補正の画像を使用することでこの問題は解決されましたが、カメラからのポイントクラウドデータを取得すると、カメラフレームにはまだy方向に1センチの距離があります。 – kangaroo