-3

我正在使用玩家阶段模拟 2.0 在 C++ 中编写基于前沿的探索算法,但我被困在特定部分。据我了解,laserProxy 可对机器人前方的环境进行 180 度扫描。我有一个循环遍历机器人的所有 180 个光束,并分析每一个。

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 回答