2016-10-26 4 views
0

に1つの空間から点群の変換私は、ロボットアームとMicrosoftのKinect 2.0を持っています。 Kinectは、Kinectの原点と回転によってオフセットされた3D点群を出力できます。ロボットアームは、最も外側の手首をXYZ位置(および回転)mmで移動できます。

は、Kinectのは、腕に装着されていることを想像してみてください。 ロボットはX:0、Y:570、Z:-950の位置に移動し、Kinectが真下を指すように(Z軸の周りに-90度回転して)手首を回転させます。

私はKinectのからColorMeshを取得する場合、どのように私は回転し、それがロボットスペースの代わりに、3Dカメラ空間であるようにメッシュをオフセットでしょうか?私はこれについてあまり知らないので、どんな助けもありがたいです。ここで

は心の中で現実のセットアップの実例です: 球が腕のワークスペースの範囲を示しています。 enter image description here

は、私はこのような何か見てクラスを把握した

public class CameraToRobotCalibrator 
{ 
    //offset in mm compared to robot origo 
    public const float x_offset = 0f; 
    public const float y_offset = 570f; 
    public const float z_offset = -950f; 

    //camera rotated around its own origo 
    public const float x_rotation = 0f; 
    public const float y_rotation = 0f; 
    public const float z_rotation = -90f; 

    public ColorMesh ConvertToRobospace(ColorMesh mesh) 
    { 
     //? 
    } 
} 

それはあまりにもハードではないでしょう1ポイントのためだった場合、私は推測しているが、私は知りません。頂点と面を持つメッシュ全体?

答えて

1

ロボットと自由の程度のスペックを考えると、あなたは通常、エンドエフェクタの位置と方向を説明4x4の行列を計算することができます。これは、ロボットの設計に特有のものです。この行列をEとしましょう。

はその後、あなたは、エンドエフェクタ上のKinectをマウントする必要があります。これにより別の翻訳が導入され、場合によってはローテーションが導入されます。そのため、Kinectがendeffectorにどのようにマウントされているかを表す別の行列Mが必要です。エンデFectorの座標系からKinectの座標系への変換です。理想的には、この行列は何らかの形で較正される。良い初期推測は、測定することによって得られるかもしれない。

次に、ロボットのルート座標系からKinect座標系への全体の変換は、T = R * M(列メジャー行列を仮定)です。

これは、メッシュを変換するために必要なマトリックスです。メッシュを変形することは、単一の点を変形することと同じです。しかし、今では、すべての頂点の位置(w-componentとして1を加える)とすべての頂点の法線(w-componentとして0を加える)を変換します。顔のインデックスをそのまま維持する。私の実装に興味のある人のための

+0

私は行列を使用して非常に少ない経験を持っていることは、マトリクス状になり値が4x4の行列、だ場合、私はそれらを使用した最後の時間は、2013年 にありました位置に対応し、どちらを回転させるか? –

+1

これでもう一度それらを使用する時間です。ほとんどのロボットAPIは 'E'を計算する関数を提供しています。左上の3x3行列は回転に対応し、最後の列または行は位置に対応する。 –

+0

軸の1つがミラーリングされている場合はどうすればよいですか? Y軸がミラーリングされているとします。 XとZが1でYが-1の「スケール行列」を使用していますか? –

0

、こちらを参照してください。 http://pastebin.com/zfCdVFNE

をあなたは、おそらく私だけのKinectのAPIからMatrix4を使用し、そこにいくつかの優れたマトリックスのライブラリを見つけることができます。

プロパティは実生活で測定され、ロボットとKinectでテストを実行した後に較正されました。

誰かがこの質問にいつかつまずき、「CODEはどこですか?」と思っていました。

が、私は基本的に、このガイドでは、ダミーのために行列に続く:http://www.codinglabs.net/article_world_view_projection_matrix.aspx