問題タブ [slam-algorithm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
computer-vision - SLAM はどのようにランドマークを抽出しますか?
「slam for dummies」のチュートリアルでは、レーザー スキャナーが使用され、ランドマーク抽出の 2 つの方法が示されました。
しかし、実用的な SLAM の実装のほとんどは、カメラ画像に基づいています。これらのアプリケーションでは、ランドマークはどのように抽出されるのでしょうか? Durrant-Whyteの論文では言及されておらず、ランドマーク抽出を含むエンド ツー エンドのデモ プロジェクトを見つけることができませんでした。
python - Turtlebot は既知の環境をスキャンしてオブジェクトを探します - 探索の戦略
事前生成されたマップを使用した Turtlebot 探索
私は、既知の環境 (事前に構築されたマップの助けを借りて) をナビゲートし、オブジェクト (赤いボールなど) を検索することになっているタートルボットの探索戦略に取り組んでいます。
マップは gmapping を使用して生成されており、現在、既知のマップを探索するための戦略を実装しようとしています。マップ上にランダムなポイントを生成し、これらのポイントで 360° スキャンを実行することもできますが、オブジェクトが存在する場合にその位置が特定されるとは限らないため、私はこの方法にあまり熱心ではありません。
私が望むのは、これらすべてのポイントを訪問し、それらのポイントのそれぞれで 360° スキャンを実行した後、マップのアクセス可能/可視領域全体がロボットによってカバーされるような一連のポイントです。
アート ギャラリー アルゴリズム (ここで説明: http://cs.smith.edu/~orourke/books/ArtGalleryTheorems/Art_Gallery_Full_Book.pdf ) も同様のことを達成していると感じたので、私のシナリオでそれを実装しようとしました。
アート ギャラリーの問題にはポリゴンが必要であり、実際のロボットで gmapping によって生成されたマップからポリゴンを生成することは非常に困難であることがわかりました (単純なマップの場合は可能ですが)。
Python で三角形モジュールを使用して、オブジェクトのクラスターの凸包を作成しようとしましたが、以下にリンクされているようなノイズの多い環境ではあまり役に立ちません。(.pgm ファイルを障害点のみをプロットして .png に変換しました)
注:私のタートルボットにはレーザー スキャナーがありません。Asus Xtion Pro Live が搭載されているだけです。
次の点について、お役に立てれば幸いです。
- タートルボット (できれば ROS のパッケージ) で既知のマップを探索する簡単な方法はありますか?
- アート ギャラリー アルゴリズムが実行可能なオプションである場合、障害物のスキャン ポイントから正確なポリゴンを取得するにはどうすればよいですか?
前もって感謝します。
3d - Kinect 2.0 の屋内マッピング用のライブラリはありますか?
ロボット工学分野で使用できる Kinect の機能を探っています。
私は、Kinect がロボットの重要なコンポーネントであるテレプレゼンス ロボットに取り組んでいます。実際、ロボットがどこにあるかのマップを生成するために使用されるコンポーネントであり、ロボットがスムーズにナビゲートして前方の障害物を回避できるようにします。同様のプロジェクトを検索したところ、やりたいことと同じではないにしても、より近いアプリケーションがいくつか見つかりました。私の研究に最も近いアプリケーションは、MIT によって行われた次のプロジェクトです。
私がこれまでに知っていることは、そのプロセスに含まれるテクニックは次のとおりです。
- 3D マッピング
- 3D 点群
- ローカリゼーションとマッピングの同時実行 (SLAM)
現在、次のチュートリアルを使用して 3D 点群の生成に成功していますが、次に何をすればよいかわかりませんでした。
チュートリアルやライブラリなど、役立つ情報があれば幸いです。基本的には出発点
image-processing - 正確な画像のサイズ変更
バイリニア補間を使用して画像のサイズを変更し、画像ピラミッドを作成する必要があります。ピラミッドのさまざまなレベルでコーナーを検出し、ピクセル座標をスケーリングして、最大画像の寸法に相対的になるようにします。
オブジェクトのコーナーがすべてのレベルでコーナー/キーポイント/機能として検出された場合、異なるレベルから対応するピクセル座標をスケーリングして最大の画像に収まるようにした後、理想的にはそれらが同じであることを望みます価値。したがって、画像のサイズを変更するときは、できるだけ正確にしようとしています。
画像 L_n_minus_1 のサイズを変更して、より小さな画像 L_n を作成するとします。私のスケール係数は「比率」です(比率> 1)。
※どの図書館も使えません。
以下の疑似コードを使用してサイズを変更できます (これは、サイズ変更アルゴリズムをオンラインで検索したときに通常見つけられるものです)。
または、以下の変更されたコードを使用できます。
2 番目のコードは、ピクセルの中心が (0.5, 0.5) のような座標を持つと想定して開発されました。このようにして、左上のピクセルの座標は (0.5, 0.5) になります。
仮定しましょう:
2 x 2 の宛先イメージが 4 x 4 のソース イメージからサイズ変更されています。
最初のコードでは、最初のピクセルの座標が (0,0) であると想定されているため、たとえば私の比率は 2 です。
xSrcInt = (int)(0*2); // 0 ySrcInt = (int)(0*2); // 0
xDiff = (0*2) - 0; // 0 yDiff = (0*2) - 0; // 0
したがって、c0 が 1 になり、c1、c2、および c3 が 0 になるため、事実上、ソースから最初のピクセル値をコピーするだけです。
しかし、2番目のコードでは取得します
xSrcInt = (int)((0.5*2) - 0.5); // 0; ySrcInt = (int)((0.5*2) - 0.5); // 0;
xDiff = ((0.5*2) - 0.5) - 0; // 0.5; yDiff = ((0.5*2) - 0.5) - 0; // 0.5;
この場合、c0、c1、c2、および c3 はすべて 0.25 になります。したがって、左上の 4 ピクセルを使用します。
どう思うか、私の 2 番目のコードにバグがあるかどうか教えてください。視覚的な結果に関する限り、完全に機能しています。しかし、はい、キーポイントと 2 番目のコードの配置が改善されていることに気付いたようです。しかし、それは私が偏見で判断しているためかもしれません:-)。
前もって感謝します。