11

三角测量通过检查您与三个已知目标的角度来工作。

“我知道那是亚历山大灯塔,它位于地图上 (X,Y) 的位置,它就在我的右边,呈 90 度角。” 针对不同的目标和角度再重复 2 次。

三边测量通过检查您与三个已知目标的距离来工作。

“我知道那是亚历山大灯塔,它位于地图上 (X,Y) 的位置,而我距离那里 100 米。” 针对不同的目标和范围再重复 2 次。

但是这两种方法都依赖于知道你在看什么。

假设您在森林中,您无法区分树木,但您知道关键树在哪里。这些树被手工采摘为“地标”。

你有一个机器人慢慢地穿过那片森林。

您是否知道任何仅基于角度和范围来确定位置的方法,利用地标之间的几何形状?请注意,您也会看到其他树,因此您不会知道哪些树是关键树。忽略目标可能被遮挡的事实。我们的预算法会处理这个问题。

1)如果存在,它叫什么?我什么也找不到。

2) 你认为有两个相同位置“命中”的几率是多少?我想这是相当罕见的。

3)如果有两个相同的位置“命中”,我如何确定下一次移动机器人后的确切位置。(我假设在我重新定位机器人之后,连续出现 2 次精确角度的可能性在统计上是不可能的,除非像玉米一样成排生长的森林)。我会重新计算位置并希望最好吗?或者我会以某种方式将我之前的位置估计纳入我的下一个猜测中?

如果存在,我想阅读它,如果没有,将其作为一个副项目开发。我只是现在没有时间重新发明轮子,也没有时间从头开始实施。因此,如果它不存在,我将不得不找出另一种方法来定位机器人,因为这不是本研究的目的,如果存在,希望它是半简单的。

4

5 回答 5

10

好问题。

  1. 您正在调查的问题的名称是本地化,它与映射一起是目前机器人技术中最重要和最具挑战性的两个问题。简而言之,定位是“给定一些传感器观察结果,我怎么知道我在哪里?”的问题。

  2. 地标识别是支撑机器人技术实践的隐藏“技巧”之一。如果无法唯一识别地标,您最终可能会收到大量错误信息,特别是考虑到真实传感器是随机的(即/结果会存在一些不确定性)。您对适当定位方法的选择几乎肯定取决于您唯一识别地标或将地标模式与地图相关联的能力。

  3. 很多情况下最简单的自定位方法是蒙特卡洛定位. 实现这一点的一种常见方法是使用粒子过滤器。这样做的好处是,当您没有出色的运动模型、传感器功能并且需要能够处理意外影响(如移动障碍物或地标遮挡)的强大功能时,它们可以很好地应对。粒子代表车辆的一种可能状态。最初,粒子是均匀分布的,随着车辆的移动并添加更多的传感器观察结果。粒子状态被更新以远离不太可能的状态 - 在给出的示例中,粒子将远离范围/方位与当前位置估计中应该可见的区域不匹配的区域。如果有足够的时间和观察,粒子往往会聚集在一起,进入车辆很可能被定位的区域。

于 2010-05-12T04:55:38.113 回答
2

我假设您想首先打开森林内的机器人。我进一步假设机器人可以使用角度和距离计算每棵树的位置。

然后,您可以通过遍历树并计算与所有邻居的距离来识别地标。在 Matlab 中,您可以使用pdist来获取所有(唯一)成对距离的列表。

然后您可以遍历树以识别地标。对于每棵树,将与其所有邻居的距离与地标之间的已知距离进行比较。每当您找到候选地标时,您都会检查其可能的地标邻居以获取正确的距离签名。由于您说您始终应该能够在任何给定时间看到五个地标,因此您将尝试匹配 20 个距离,所以我想说误报的可能性不会太高。如果候选地标及其候选地标与完整的相对距离模式不匹配,则检查下一棵树。

找到所有地标后,您只需进行三角测量。

请注意,根据您测量角度和距离的准确程度,您需要能够在任何给定时间看到更多地标树。我的猜测是,如果您具有较高的测量精度,您需要以足够的密度分隔地标,以便一次至少可以看到三个。

于 2010-05-12T03:27:47.530 回答
2

您正在寻找的是蒙特卡洛定位(也称为粒子滤波器)。这是关于这个主题的一个很好的资源

或者来自概率机器人群体的几乎任何东西,Dellaert、Thrun、Burgard 或 Fox。如果你有野心,你可以尝试一个完整的 SLAM 解决方案——这里有一堆库。

或者,如果您真的很有野心,您可以使用Factor Graphs从第一原则实施。

于 2013-06-11T20:23:43.493 回答
0

我想你只需要到两个地标的距离和看到它们的顺序(即从左到右你看到 A 点和 B 点)

于 2010-05-12T10:31:06.993 回答
0
  • (1)“机器人映射”和“感知混叠”。
  • (2) 两次相同的命中是不可避免的。由于机器人只能区分有限数量 X 的可区分树配置,即使配置是完全随机的,几乎可以肯定至少有一个位置看起来与其他位置“相同”,即使您遇到的位置少于 X /2 不同的树。这些被称为“生日悖论碰撞”。您可能很幸运,您所在的特定位置实际上是独一无二的,但我不会把我的机器人打赌。

那么你:

  • (a) 有一张大面积的地图,上面有一些但不是所有的树。
  • (b) 在实际森林中某处的机器人,在不看地图的情况下,已经查看了附近的树木,并生成了一个小区域内所有树木的内部地图及其与它们的相对位置
  • (c) 对于机器人来说,每棵树看起来都和其他树一样。
  • 你想找:大地图上的机器人在哪里?

如果只有每棵实际的树上写有机器人可以读取的唯一名称,然后(其中一些)这些树及其名称出现在地图上,这将是微不足道的。

一种方法是在每棵树上附加一个(不一定是唯一的)“签名”,描述其相对于附近树木的位置。

然后,当您沿途行驶时,机器人会驶向一棵树并为该树找到一个“签名”,然后您会在地图上找到与该签名“匹配”的所有树。如果地图上只有一棵独特的树匹配,那么机器人正在寻找的树可能就是地图上的那棵树(是的,你知道机器人在哪里)——在地图上给机器人的亲戚放一个沉重但暂定的点匹配树的位置——机器人旁边的树肯定不是其他树地图上的树。如果地图上的几棵树匹配——它们都具有相同的非唯一签名——那么你可以在地图上相对于它们中的每一个的机器人位置放置一些权重较小的试探点。唉,即使找到一个或多个匹配项,仍然有可能机器人正在查看的树根本不在地图上,并且该树的签名巧合地与地图上的一棵或多棵树相同,并且所以机器人可以在地图上的任何地方。如果地图上没有一棵树匹配,那么机器人正在查看的树肯定不在地图上。(也许稍后,一旦机器人确切地知道它在哪里,它应该开始这些树添加到地图中?)

当您沿着小路行驶时,您会将这些点推向您估计的行进方向和速度。

然后,当您检查其他树时,可能在沿着小路进一步行驶后,您最终会在地图上看到很多点,并且希望在实际位置有一个重的、高度重叠的簇,并且希望每个其他点都是容易忽略的孤立的巧合。

最简单的签名是从特定树到附近树的距离列表。地图上的一棵特定树与森林中的一棵特定树“匹配”,对于地图上的每一棵附近的树,在“相同”距离的森林中都有对应的附近树,尽可能远告诉你已知的距离和角度误差。

(通过“附近”,我的意思是“足够近,机器人应该能够肯定地确认树确实在那里”,尽管用类似“我的机器人可以看到所有树的范围”可能更简单R,所以我只会费心尝试匹配距离我的机器人 R*1/3 圈内的树木,而我的距离列表仅包括距离 R*2/3 圈内的树木我要匹配的特定树”)。

如果您甚至非常粗略地知道您的南北方向,您可以创建“更独特”的签名,即在地图上和(希望)在真实森林中具有更少的虚假匹配。机器人旁边的树的“匹配”发生在,对于地图上的每棵附近的树,森林中都有一棵对应的树,在“相同”的距离和方向上,就你所知的距离而言和角度误差。假设您看到地图上的树“Fred”在距离它的 N 到 W 象限 10 米处有另一棵树,但机器人旁边的一棵树在 N 到 W 象限的那个距离内绝对没有任何树,但它在南边 10 米处有一棵树。在那种情况下,那么(使用更复杂的签名)你可以肯定地告诉机器人不在 Fred 旁边,

另一种方法:“数字纸”解决了类似的问题……你能以专门设计的易于识别的图案种植几棵树吗?

于 2010-06-22T19:53:25.623 回答