-2

レゴ NXT と 100x100cm の正方形の部屋があります。私は常に部屋の中心を出発点 (ブラック ボックス) として使用したいと考えています。緑色のボックスは私の公園エリアになります。円は、途中でランダムに配置された障害物になる可能性があります。赤は部屋の壁です。目的:

  • ロボットがどこにいても開始するときは、中央に戻り、その後、要求されたときに緑色のボックスに駐車できる必要があります。
  • その復帰センター/ホームの進行では、途中で障害が発生する可能性があります。これらの障害を克服して、うまく駐車できるように努力する必要があります。障害物は円形である必要はなく、正方形でもかまいません。
  • 公園/中央エリアに障害物がある場合、駐車できないというエラーを出すか、駐車を中止する必要があります...

最悪のシナリオ: ロボットがコーナーから出発し、駐車する途中に障害物がある。とりあえずカラーセンサーと超音波センサーを使っていますが、ジャイロセンサーを追加することもできますが、まだ詳しく調べていません。RFIDセンサーも持っていますが、2つのトランスポンダーだけではあまり役に立たないと思います.

私の最初の課題は、ロボットの中心を特定することで障害がなく、ランダムな位置からどこに来る必要があるかを知ることです。任意のヒント?ルジョスを使用しています。

ロボットルーム

超音波は、±3 cm の精度で 5 ~ 255 cm の距離を測定できます。5 cm 未満のものはすべて 6 ~ 8 cm として表示されます。三角形 / 丸い面は問題があり、そのような場合は距離の誤差が 10 cm になる可能性がありますが、最初はすべて正方形 / きれいなオブジェクトと見なします。カラー センサーは超音波センサーの下にあり、両方とも車のライトのようにロボットの前面にあります。

4

1 に答える 1

0

コメントに同意します。「受け入れられる」答えが何であるかを想像するのは難しいです。このようなタスクは単純に見えるかもしれませんが、古典的な「感覚-計画-行動」サイクルを含む非常に複雑なプロセスです。

  • センサーでオブジェクトを検出し、これを世界に関する知識に統合する
  • 習得した知識を含めた進路計画
  • 目標に向かって行動する

ここには多くの未知数があります。たとえば、ロボットが障害物の壁に囲まれている「縮退」の場合はどうでしょうか。ロボットは自分の向き (自分が向いている方向) を認識していますか? どのようにロボットを制御しますか? DifferentialPilotクラスを使用していますか? ロボットは、接近している 2 つの障害物を通過できるかどうかを検出できるように、センチメートル単位のサイズ(幅) を認識していますか? ロボットは「最短経路」をとろうとするべきですか、それともしばらくの間、世界を広範囲に探索しても問題ありませんか? 帽子の障害物は距離センサーで、駐車場はカラーセンサーで検知すると考えてよいでしょうか?カラーセンサーの範囲は数センチしかないというのは本当ですか? そしておそらく最も重要なこと:駐車位置はどこか分かりますか?

これらすべての質問を考慮すると、可能なアプローチについて一般的なヒントを与えることしかできません。答えが閉じられる前にこれをやろうとします。しかし、これは本当に深遠な段階的な解決策としてではなく、提案としてのみ考えるべきです。なぜなら、解決策まったく機能するかどうかを判断する前に、上記のすべての質問に答えなければならないからです(そして、それ機能するかどうかは別の質問...)


「世界」の意図した表現について考える必要があります(または、すでに考えている場合は、この表現について説明してください!)。ここでは、ある種の「グリッド」で十分かもしれないと想像できます。しかし、世界の表現にLineMapを使用すると、NXT API の既存のインフラストラクチャを使用できるようになるため、おそらく有益です。

世界を表現したら、その中心を見つけなければなりません。繰り返しますが、障害物がある場合、これは不可能かもしれません (ここで洞窟の比喩について考えています)。しかし、障害物がない場合は、ロボットをその場で約 360°回転させることができます。これにより、すべての壁のポイントの距離情報が得られます。この情報があれば、世界のを検出できるはずです。これらは、正確に の境界矩形の隅になりLineMapます。これらの角の位置の平均を計算すると、中心が得られます。

センターに移動したら、駐車位置に移動する必要があります。セットアップを正しく理解していれば、この駐車位置がどこにあるのかさえわかりません。この場合、体系的な調査を開始する必要があります。中心から始めて、外側に向かって「らせん状」に移動することを試みることができます。障害物に遭遇するたびに、この「らせん」上の次の自由なポイントに移動しようとします。駐車位置がわかっている場合は、すべての障害物を避けて、この位置に直接移動しようとすることができます。

どちらの場合も、「現在の位置」と「目標位置」があります。後者は「スパイラル上の次のフリー ポイント」または「駐車位置」です。世界地図でこれらのポイント間のパスを見つけるには、A* 検索アルゴリズムを使用できます。幸いなことに、NXT API はすでにShortestPathFinderを提供しています。それにもかかわらず、これを統合してロボットを適切に制御するのは難しいかもしれません. しかし、たとえばDifferentialPilotクラスを使用すると、おそらく、あなたがやろうとしていることとすでに似ているタスク用の無料/サンプルソースコードのリソースがたくさんあるでしょう。そこに「インスピレーション」を見つけることができるかもしれません。

于 2014-04-26T13:06:51.967 に答える