1

ロボットを追跡するための小さなWPFデスクトップアプリに取り組んでいます。机の上にKinectforWindowsがあり、基本的な機能を実行して、深度カメラストリームとRGBカメラストリームを実行することができました。

必要なのは床にあるロボットを追跡することですが、どこから始めればよいのかわかりません。EMGU(OpenCVラッパー)を使用する必要があることがわかりました

私がやりたいのは、ロボットを追跡し、深度カメラを使用してロボットの位置を見つけることです。基本的には、ステレオ三角測量を使用したロボットのローカリゼーション用です。次に、TCPとWifiを使用して、RGBカメラと深度カメラの両方を使用してロボットをある場所から別の場所に移動するためのコマンドをロボットに送信します。RGBカメラは、ロボットが最適なパスをたどり、オブジェクトを回避できるように、エリア内のオブジェクトをマッピングするためにも使用されます。

問題は、これまでComputer Visionを使用したことがなく、実際に初めてのことです。締め切りに間に合わず、このプロジェクトを完了するために関連するすべてのことを学びたいと思っています。

私は自分のニーズを達成するための詳細、説明、ヒント、リンク、またはチュートリアルを探しています。

ありがとう。

4

2 に答える 2

3

ロボットのローカリゼーションは非常に難しい問題であり、私自身は何ヶ月も苦労してきました。私が達成したことをお話しすることができますが、いくつかの選択肢があります。

  • オプティカルフローベースのオドメトリ:(視覚オドメトリとも呼ばれます):
    1. 1つの画像または特徴からキーポイントを抽出します(私はShi-Tomashi、またはcvGoodFeaturesToTrackを使用しました)
    2. 連続する画像についても同じようにします
    3. これらの機能を一致させます(私はLucas-Kanadeを使用しました)
    4. Kinectから深度情報を抽出する
    5. 2つの3D点群間の変換を計算します。

上記のアルゴリズムが実行しているのは、2つのフレーム間のカメラの動きを推定しようとしていることです。これにより、ロボットの位置がわかります。

  • モンテカルロローカリゼーション:これはかなり単純ですが、ホイール走行距離計も使用する必要があります。ac#ベースのアプローチについては、このペーパーを確認してください。

上記の方法では、確率モデルを使用してロボットの位置を決定します。

悲しい部分は、必要なことを非常に簡単に実行するためにライブラリがC ++に存在する場合でも、C#用にライブラリをラップすることは非常に困難な作業です。ただし、ラッパーをコーディングできる場合は、作業の90%が完了し、使用する主要なライブラリはPCLMRPTです。

最後のオプション(これははるかに簡単ですが、最も不正確です)は、KinectSDK1.7に組み込まれているKinectFusionを使用することです。しかし、ロボットのローカリゼーションに関する私の経験は非常に悪いものでした。

Slam for Dummiesを読む必要があります。これにより、モンテカルロローカリゼーションに関することが非常に明確になります。

難しい現実は、これは非常にトリッキーであり、おそらく自分でそれを行うことになるということです。この広大なトピックに飛び込んで、素晴らしいことを学んでいただければ幸いです。

詳細については、または私が書いたラッパー。以下にコメントしてください...:-)

一番

于 2013-04-14T14:47:41.433 に答える
1

それがあなたを助けるかどうかはわかりません...しかし、私は役立つかもしれないPythonモジュールをまとめました。

http://letsmakerobots.com/node/38883#comments

于 2013-12-31T04:04:41.133 に答える