-3

プレーヤー ステージ シミュレーション 2.0 を使用して C++ でフロンティア ベースの探索のアルゴリズムを作成していますが、特定の部分で行き詰まっています。私の理解では、laserProxy はロボットの前の環境を 180 度スキャンします。ロボットの 180 個のビームすべてを反復処理し、それぞれを分析する for ループがあります。

for (int i = 0; i < lp->GetCount(); i++) {

lp は、LaserProxy へのポインターです。LaserProxy のリファレンス マニュアルを確認したところ、GetCount() はスキャンのポイント数を返すと想定されています。これはロボットから投影されるビームの数なので、常に 180 であると想定しましたが、そうではありません。GetCount() が 0 の場合もあれば、90 の場合もあり、その他の値になる場合もあります。なぜそうなのか、誰か説明できますか?

ありがとうございました

4

1 に答える 1

0

この質問では、コードを確認する必要があります。別のオープンソースのロボット シミュレーターにレーザー スキャナーを実装しています。最も簡単なのは、光線をキャストして交点を計算することです。線は必ずしも交差する必要はありません。したがって、それらが交差しない場合、(交点の) ポイントがまったく返されないことは理解できるかもしれません。あなたが見なければならないファイル:

$ grep -lr scan_count .  | grep drivers 
./server/drivers/laser/laserrescan.cc
./server/drivers/laser/sickLDMRS.cc
./server/drivers/mixed/mricp/src/mricp_driver.cpp

laserrescan ファイルは常に 181 ポイントを返しますが、SICK レーザーはそうではありません。コードを参照してください。

于 2013-05-14T23:38:03.460 に答える