播放器阶段命令

时间:2013-05-08 18:10:49

标签: c++ robotics

我正在使用播放器舞台模拟2.0在c ++中编写基于Frontier Based Exploration的算法,我被困在一个特定的部分。根据我的理解,laserProxy可以对机器人前方的环境进行180度扫描。我有一个for循环,遍历机器人的所有180个光束,并分析每个光束。

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

lp是指向LaserProxy的指针。 我检查了laserProxy的参考手册,GetCount()假设返回扫描中的点数。我认为这将永远是180,因为从机器人投射了多少光束,但事实并非如此,有时GetCount()为0,有时为90,以及其他值。谁能解释为什么会这样呢?

谢谢

1 个答案:

答案 0 :(得分: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

激光扫描文件总是返回181点,但SICK激光器没有,请参见代码。