2017-12-12 40 views
1

オーバーヘッドの姿勢(ワールド座標系で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)が不正確な場合のよくある間違いは何ですか?

+0

オブジェクトからカメラの一部までの距離を正確に測定しますか?レンズ?カメラ内部の光感知イメージセンサー?あなたのカメラの姿勢はどれですか? – mikkola

+0

レンズから測定しました。 – kangaroo

+0

多くの時間を費やした後、私はカメラからの出力がデフォルトで修正されていることに気付きました。未補正の画像を使用することでこの問題は解決されましたが、カメラからのポイントクラウドデータを取得すると、カメラフレームにはまだy方向に1センチの距離があります。 – kangaroo

答えて

0

私はあなたがzを測定する方法がわからないが、私は何を定規で測定していることはzではないと信じているが、そのように計算されeuclidean distance

d=std::sqrt(x*x+y*y+z*z); 

はのは、例を見てみましょう、 x=2; y=2; z=2; ならば、dはそう3.5-2=1.5はあなたがのz方向のため15-20ミリオフに言ったとき、あなたがzと定規の間で取得違いですd~3,5になります。

+0

Iは推定された姿勢をワールドフレームに変換し、x、y、zの各方向について測定した。ユークリッド距離ではなくzを測定しました。 – kangaroo

関連する問題