1

設定

タイプのPCLポイントクラウドがありPointXYZます。タイプのグリッドマップに変換する必要があります。少なくとも1つのポイントがある場合はtrueである必要がありますvector<vector<bool> >map[x][y]マップは、点群の特定の領域を表す必要があります(たとえば、x = [-10,10]、y=[-15,15]の点群の寸法をカバーする20x30セル。

私が今持っているもの

現在、私には2つのアプローチがあります。

  1. すべてのポイントをスキャンし、マップ内の対応するセルをtrueに設定します。
  2. ポイントを平面に投影し、Kdツリーを作成してから、マップ内のセルごとにツリーに最も近いポイントを照会し、セルに該当する場合はセルをtrueに設定します。

ここで、最初のアプローチは小さな点群に適しています。O(n)で、nは点群内の点の数です。

2番目のアプローチは大きな雲に適していると思います。最終的なクエリはO(m)のみです。ここで、mはマップのサイズです。ただし、Kdツリーの構築と平面へのクラウドの投影は、どちらも約O(n)である必要があります。

2番目のアプローチは常に悪いと思いますが、テストを実行して確認します。

質問

より良いアプローチはありますか?たぶん、OctreeまたはVoxel-Grid(2D)で何か?アプローチ1の問題は、関心領域外のポイントを不必要に見ていることです。

私がこの問題を最初に抱えることはできないようですよね?

4

1 に答える 1

3

点群がすでに「編成」されている場合(たとえば、RGBDセンサーから直接発生した場合など)、2D配列を巧みにトラバースすることで、最良の場合にO(N)を打ち負かすことができる場合があります。組織化された点群については、https: //pcl.readthedocs.io/projects/tutorials/en/latest/basic_structures.htmlを参照してください。

ポイントクラウドが編成されていない場合、ポイントクラウドには、ポイント自体を除いて空間編成に関する情報がないため、ほとんどの場合、ポイントのすべてに触れる必要があります。マップが十分に小さい場合は、マップがいっぱいになったときに終了できますが、それが発生する可能性は低いと思います。

確率的な結果に満足している場合は、点群をランダムにサンプリングしてマップを作成できます。

于 2013-01-23T09:36:17.990 に答える