2017-02-14 4 views
1

私は現在、レーザーモジュールを使ってロボットの周りの距離を測定するプロジェクトに取り組んでいます。そのロボットは、得たポイントに基づいて移動しなければなりません。(円)ポイントマップでセグメントを見つけるにはどうすればよいですか?

現在、対応するアングルの中心からの距離を表す360ポイントにアクセスできます。

(0°、1°、等のための距離に対する距離)ここで、2D表面上に表示されたときにポイントがどのように見えるかの例です: Circular representation of the points

私のことができるようにしたいのですがどのようなそれは、ロボットに360点すべてを供給するのではなく、複数点を含むセグメントにフィードすることです。例えば、ポイントが完全に整列していなくても、画像の下部は単一のセグメントになります。

私の質問には、私がやろうとしていることを達成するのに役立つ既存のアルゴリズムがありますか?

おかげで多くのことを(私はpythonで働いているが、それは本当に要因ではありません)。

答えて

0

あなたのポイントが順序付けられていると仮定:中間点は、いくつかの距離未満離れた2点間のセグメントからであれば、二つの点で先に見て、各点について

を、その後、1 PT、さらにエンドポイントをプッシュし、中間点の両方があなたの線分からまだ離れていることを確認してください。 falseになるまでこれを実行して、1ポイントをロールバックしてセグメントを生成し、そのセグメントの終わりを次のセグメントの開始点として設定します。また、距離の代わりに角度を考慮することもできます。これは、それが好ましい場合があるためです。また、いくつかの試行で特定の開始点からセグメントを作成できない場合は、開始点を前方に押してください(すべてがセグメントに単純化されるわけではありません)。

代わりに、デカルト点に変換し、得られたポイントクラウドからラインを検出する投票アルゴリズム。

関連する問題