三角测量的工作原理是检查您与三个已知目标的角度。

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

三边测量的工作原理是检查您与三个已知目标的距离。

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

但这两种方法都依赖于了解您正在查看的内容。

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

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

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

1)如果存在,它叫什么?我找不到任何东西。

2)您认为拥有两个相同位置的“热门单位”的可能性是什么?我想这很少见。

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

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

有帮助吗?

解决方案

什么你要找的是蒙特卡洛定位(也称为颗粒过滤器)。 下面是关于这个问题一个很好的资源。

或者从概率机器人几乎任何人群,Dellaert,史朗,Burgard或狐狸。如果你感觉雄心勃勃,你可以尝试去为一个完整的解决方案SLAM - 一堆图书馆张贴 rel="nofollow">这里。

或者,如果你真的雄心勃勃,你可以使用因子图第一的原则落实

其他提示

很好的问题。

  1. 您正在研究的问题的名称是定位,它与绘图一起是目前机器人技术中最重要和最具挑战性的两个问题。简而言之,定位的问题是“根据一些传感器观察,我如何知道我在哪里?”

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

  3. 在许多情况下,最简单的自定位方法是 蒙特卡罗本地化. 。实现此目的的一种常见方法是使用粒子过滤器。这样做的优点是,当您没有出色的运动模型、传感器功能并且需要强大的东西来处理意外效果(例如移动障碍物或地标遮挡)时,它们可以很好地应对。一个粒子代表车辆的一种可能状态。最初,粒子是均匀分布的,随着车辆移动并添加更多传感器观测结果。粒子状态被更新以远离不太可能的状态 - 在给定的示例中,粒子将远离范围/方位与当前位置估计中应可见的区域不匹配的区域。如果有足够的时间和观察,粒子往往会聚集到车辆很可能位于的区域。查阅 Sebastian Thrun 的著作,特别是《概率机器人学》一书。

我假定你想开启在森林中的机器人启动。我还假设机器人可使用角度和距离计算每一棵树的位置。

然后就可以通过树遍历并计算其所有邻国的距离识别标志。在Matlab中您可以使用pdist让所有(唯一的)成对距离的列表。

然后你就可以穿过树林迭代识别标志。对于每一棵树,比较距离其所有邻国的地标之间的已知距离。无论何时你发现的候选地标,你检查它可能标志性邻居的正确距离的签名。既然你说你总是应该能看到五个地标在任何给定的时间,你会试图匹配20米的距离,所以我会说,误报的几率不太高。如果候选地标,它的候选人研究员标志不完整的相对距离模式相匹配,你去检查下树。

一旦你发现所有的地标,只需三角。

请注意,这取决于你如何能准确地测量角度和距离,你需要能够看到更多的具有里程碑意义的树木在任何给定的时间。我的猜测是,你需要空间的地标具有足够的密度,你可以,如果你有较高的测量精度时看到至少有三个。

我想你仅需要两个界标距离和看到他们的顺序(即,从左至右看到点A和B)

  • (1)“机器人建图”和“感知混叠”。
  • (2) 两次相同的命中 不可避免的. 。由于机器人只能区分有限数量的 X 可区分的 树配置,即使配置完全随机,几乎可以肯定至少有一个位置看起来与其他位置“相同”,即使您遇到 远的 少于 X/2 种不同的树。这些被称为“生日悖论碰撞”。您可能很幸运 特别的 你所在的位置实际上是独一无二的,但我不会用我的机器人来赌它。

那么你:

  • (a)有一个大面积的地图,其中有一些,但并非所有树木。
  • (b)实际森林中某个地方的机器人,该机器人在不浏览地图的情况下看着附近的树木,并生成了一个小区域中所有树木及其相对位置的内部地图
  • (c)到机器人,每棵树看起来与其他树相同。
  • 您想要找到:大地图上机器人在哪里?

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

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

然后,当你继续前进时,机器人会开到一棵树前并找到该树的“签名”,然后你会找到地图上与该签名“匹配”的所有树。如果地图上只有一棵唯一的树匹配,则机器人正在寻找的树 可能 是地图上的那棵树(是的,你知道机器人在哪里)——在地图上机器人与匹配树的相对位置处画一个有分量但暂定的点——机器人旁边的树肯定不是任何树的 其他 地图上的树木。如果地图上的几棵树匹配——它们都具有相同的非唯一签名——那么您可以在地图上相对于每一棵树的机器人位置处放置一些权重较小的暂定点。唉,即使找到一个或多个匹配项,机器人正在查看的树仍然有可能根本不在地图上,并且该树的签名恰好与地图上的一棵或多棵树相同,并且所以机器人可以是 任何地方 在地图上。如果地图上没有一棵树匹配,那么机器人正在查看的树肯定不在地图上。(也许稍后,一旦机器人确切地知道它在哪里,它就应该开始 添加 这些树到地图上了吗?)

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

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

最简单的签名是从特定树到附近树的距离列表。地图上的一棵特定的树与森林中的一棵特定的树“匹配”,当地图上的每棵附近的树都在森林中尽可能远的“相同”距离处有一个相应的附近的树时根据已知的距离和角度误差来判断。

(“附近”,我的意思是“足够近,以至于机器人 应该 能够肯定地确认树确实在那里”,尽管用“我的机器人可以看到 R 范围内的所有树,所以我只会打扰”这样的东西来近似这一点可能更简单 匹配距我的机器人 R*1/3 圆内的树木,而我的距离列表仅包括距我尝试匹配的特定树 R*2/3 圆内的树木”)。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top