问题标签 [trilateration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
74 浏览

c# - 从 4 个球体中获取 X、Y、Z 位置

我有 4 个 RFID 设备可以告诉我到第 5 个设备的距离。这些距离会根据干扰等而波动,但是在知道其他 4 个设备的位置的情况下,获得第 5 个设备的 X、Y、Z 位置的最有效方法是什么?我想我在使用 C# 三边测量函数?

下面的数据馈送显示了固定设备 ID(621a、b、c、d)以及与第 5 个设备(322、317 等)的距离(以厘米为单位)随时间变化。

位置数据

0 投票
2 回答
2204 浏览

python - python中的三边测量

我正在研究定位系统。我的输入是一个字典,它将给我们从点(x1,y1)等半径为 d1 的圆。我想要的输出是一个数组(类似于 2D 坐标系),其中相交区域标记为 1,其余部分为 0。我试过这个:

唯一的问题是数组很大并且花费的时间太长(循环数为 1000 万),尤其是在树莓派上,否则这是可行的。有什么方法可以使用openCV和图像然后绘制圆圈以更快地获得相交区域?

它必须是 python 2.x。

0 投票
2 回答
1764 浏览

algorithm - 模拟 3D 空间中的简单三边测量算法

背景:我正在为 OpenComputers 添加的移动计算机实现导航系统,这是一个 Minecraft 模组。对于那些不熟悉这个模组的人来说,它基本上添加了各种 Lua 可编程、可升级的计算机,包括移动计算机——即机器人、无人机和平板电脑。尝试对机器人和无人机进行编程以执行自主任务时经常出现的众多挑战之一是确保它们始终知道自己的坐标。

最简单的解决方案是使用导航升级,它正是这样做的 - 为计算机提供其相对于制作它的地图中心的精确坐标。然而,它有两个主要缺点 - 它占用了 II 级升级槽,这可不是小事,而且仅限于地图区域。后者或多或少是可以接受的,但仍然使这种导航方法在某些用例中不可用。

另一种解决方案是让计算机记住一次它们的坐标,然后跟踪它们的运动,但这也有一些潜在的警告——你必须通过自定义子程序控制所有运动或使用黑客来拦截组件调用,你可以'移动计算机时不必每次都手动输入坐标,无人机存在一些精度误差,这对平板电脑根本不起作用。

第三种方法——我正在研究的方法——类似于现实生活中的 GPS。它基于这样一个事实,即计算机可以使用无线网卡进行升级,以便能够在 400 块的相当大的距离内相互发送消息,并且随着消息本身它们接收到精确的距离(浮点数,以块为单位) ) 在发送者和接收者之间。如果我们将一些固定计算机指定为不断广播其位置的“卫星”,我们可以使移动计算机能够使用来自 4 颗以上卫星的信息进行三边测量。

这种方法具有可扩展性(您可以不断向网络中添加更多卫星以扩大其覆盖范围),不会占用仅用于导航目的的额外升级槽(因为许多移动计算机已经升级了无线网卡)并且精确,这与其他两种方法相比,它具有明显的优势。但是,它需要一些令人惊讶的复杂计算,这就是我卡住的地方。

问题:我需要找到一个三边测量算法(最好附带一个代码示例),它可以让任何移动计算机在知道指定“卫星”的坐标和距离的情况下计算其位置(在 ~0.25 块的误差范围内)他们。我们假设所有的计算机和卫星都配备了第 II 层无线网卡(即它们可以在 400 个块的总范围内相互发送消息,并以 float32 数字允许的精度知道发送者与其自身之间的距离)。该解决方案将使用纯 Lua 编码,无需访问任何第三方服务,因此像 Mathematica 这样的数据包是不行的。目前我正在押注某种合适的方法,尽管我没有

在最基本的层面上,我们可以假设有 4 颗卫星不断且正确地广播它们的位置,彼此相距适中的距离,并且不位于单个 2D 平面上。理想情况下,算法应该能够适应一些可选条件 - 请参阅下面的部分。

奖励积分

  • 使算法足够小以适应无人机的 2KB 内存(假设 UTF8 编码)。但是,它应该占用更少的空间,以便主程序也可以容纳。越小越好。
  • 制定一种算法,使卫星彼此非常接近并具有非整数坐标(以允许用一个不断移动的机器人或无人机替换多个固定卫星,或使移动计算机在从一颗卫星)。
  • 假设已经可以确定位置,则制作允许存在少于 4 颗卫星的算法 - 例如,如果所讨论的移动计算机是机器人,并且除了一个可能的位置之外的所有可能位置都低于或高于块的允许高度范围(y<0 或 y>255)。如果有三颗卫星位于例如 y=255 的高度,则这种设置是可能的。
  • 制作一种算法,该算法可以抵抗某些卫星广播稍微错误的位置(设置中的一个小错误)。鉴于存在足够正确的测量值,该算法应该推断出正确的位置或完全抛出错误。理想情况下,它还可以记录“关闭”卫星的位置。
  • 制定一种算法,该算法可以抵抗同时存在的两组或多组卫星在不同的坐标系中正确广播它们的位置(设置中的一个主要错误)。每个网络都有一个(假设是唯一的)标识符,允许区分由不同玩家(或者,好吧,只有一个)独立设置的不同网络。但是,如果他们不费心正确设置标识符,不同的信号可能会混淆,从而使移动数据终端感到困惑。因此,抗性算法应该能够检测到这种情况,或者直接抛出错误或区分不同的网络(然后可以对其进行微调以适应特定应用程序的目的 - 即拒绝加载,选择最近的网络,选择最大的网络、提示用户或控制服务器等。

我尝试了什么:除了尝试自己解决问题外,我还尝试在互联网上查找合适的解决方案。但是,我能找到的解决方案都不适合这项任务。

  • 我通过谷歌搜索“三边测量算法”发现的大部分内容都是处理现实生活中的 GPS 系统——也就是说,只使用 2 个坐标,强烈考虑错误并且通常没有提供足够的精度。
  • 相反,有些是纯数学的,建议建立一系列方程来找到球体的交点。可悲的是,据我微弱的数学背景让我理解,这种方法没有考虑浮点数的精度误差——圆不完全相交,点不在同一位置,所以方程没有解。
  • 有些似乎解释了解决方案,但涉及很多我无法理解的复杂数学,并且没有包含精确的算法或至少一个代码示例。
  • 至少有一个使用了像 Mathematica 这样的外部数据包,在这种情况下,这些数据包同样不可用。

如果我留下了一些不清楚的重点,请发表评论,以便我改进问题。提前致谢!

0 投票
0 回答
136 浏览

java - 将双向 x,y 点转换为纬度和经度?

嗨,我目前正在尝试从 2 个经度/纬度点(双向)计算一个经度/纬度点和距离,我目前已经这样做了:

我正在使用这个库https://github.com/lemmingapex/trilateration来确定我的观点。

将经度和纬度点转换为笛卡尔计划并使用库来获取一个点,给我这个输出:

所以现在我正在尝试将此点转换为纬度和经度点以将其放在谷歌地图上,但我不知道如何做到这一点以及是否已经存在用于双向定位的 Java 库?

编辑 :

所以我做到了:

但我没有得到正确的值:

我得到:

近(2 公里外),但该点应在 49.24385234064716、4.062335368930235 附近。

0 投票
2 回答
861 浏览

python - 我想在 python 中实现三边测量。我找不到我的功能有什么问题?

我正在尝试执行三边测量。Funtion 为每个坐标获取三个 3d 坐标和距基站的距离。它必须在 3d 空间三边测量中返回该点的位置。

我有一个测试示例。有了这些坐标和距离 P1=(2,2,0), P2=(3,3,0), P3=(1,4,0​​) r1=1, r2=1, r3=1.4142,它应该返回 P =(2,3,0)。

但它是回报 [3.33253331 1.66746669 1.33373281]

0 投票
1 回答
506 浏览

python - Scaling 3 circles constantly until they intersect

I have implemented the trilateration positioning algorithm in Python, and so far the results look quite off because of the computed distances are affected by signal interference and so it looks like this:

current

when it should be looking something like this:

expected

So I was thinking about scaling the circles at the same time using a constant factor until they all intersect at one point (which would be optimal) or until the sum of their mutual distances is minimum. Given the XY coordinates of the three circles in 2D-space, as well as their FSPL-computed distances from the reference point (which is the center of one of the circles), the function should return the best scaling factor that minimizes the error. It should be something like this:

I'm not a mathematician so I don't know if this logic makes sense, but if someone has a comment or a better idea, please share them. It would be of great help!

0 投票
0 回答
575 浏览

python-3.x - 我可以使用三边测量技术来识别 BLE 坐标吗?

我使用非线性回归模型将 RSSI 值转换为距离,并且我有锚节点的三个坐标和距离。使用这三个锚节点,我可以使用三边测量技术来找到目标节点的坐标吗?

我遇到了这个链接来在 python 中实现三边测量概念。什么可以代替上述链接中使用的“earthR”变量?

如果上述链接不适用,谁能建议我在 python 中实现三边测量技术来识别 BLE 坐标?

0 投票
1 回答
98 浏览

bluetooth-lowenergy - 在BLE中将RSSI值转换为距离的有效方法是什么?

我需要将 RSSI 值转换为距离,并且有一个数学表达式可用于转换,即

选择“n”值非常困难,它给了我不准确的结果。

另一种方法是非线性回归模型。哪一个给出最好的结果,因为我需要将距离值提供给三边测量技术?

0 投票
1 回答
220 浏览

bluetooth-lowenergy - 如何使用 Altbeacon Library 进行室内定位?

所以,我正在开发一个 Android 应用程序,它使用 AltBeacon 库来检测信标并获取其广告内容,但我似乎没有找到一个很好的解决方案来解决如何使用这个库进行室内定位,我正在通过谷歌搜索一些答案,我认为使用 SDK 进行室内定位是一个更好的选择,因为我需要使用 Altbeacon 不容易计算的地理位置(纬度、经度等)等信息,我对如何开始有点困惑这个,需要建议吗?

0 投票
0 回答
154 浏览

java - 如何在java中进行三边测量

我正在研究三边测量以找到未知位置的位置,为了找到距离,我使用路径损耗常数为 2,就像文章中一样,我使用 2 部手机和一台笔记本电脑作为发射器和参考。这是代码:

rssi 是距离参考 1m 的 rssi 值,而 rssi1 是未知位置 rssi。

这是三边测量代码,公式来自This

起初它给出了相当准确的结果,但后来结果没有改变甚至有很大的错误。我想知道为什么结果没有改变是因为什么时候做新的计算之前的结果没有被清除还是什么?或者我的代码中有一些错误?我有点困惑,因为从许多来源进行三边测量的方法不止一种,如下所示:

它使用 delta 来计算我不明白它来自哪里。我理解第一个代码,它是一个线性方程。我计算距离的常数是错误的吗?是否有任何代码可以解释公式进行三边测量?我也试图延长接收 rssi 信号的时间,而不是平均它,但结果仍然很糟糕。

完整代码: