2013-05-08 32 views
-3

我正在爲使用玩家階段模擬2.0的C++編寫基於Frontier Based Exploration的算法,而且我被困在特定的部分。根據我的理解,激光代理提供機器人前方環境的180度掃描。我有一個for循環遍歷機器人的所有180個光束,並分析每個光束。玩家階段命令

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

lp是指向LaserProxy的指針。 我檢查了laserProxy的參考手冊,並且GetCount()假定返回掃描中的點數。我認爲這將始終爲180,因爲從機器人投射了多少光束,但情況並非如此,有時GetCount()爲0,其他時間爲90,以及其他值。任何人都可以解釋爲什麼這樣嗎?

謝謝

回答

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激光不,看到代碼。