【UWB 定位】室内定位 三边定位算法

article/2025/11/10 9:20:33

最近在整UWB室内定位,看到一些简单的测距数据解算算法,记录一下。

 测

在基于测距的定位算法中,三边测量法是比较简单的算法,算法原理为:平面上有三个不共线的基站 A,B,C,和一个未知终端 D,并已测出三个基站到终端D的距离分别为R1,R2,R3,则以三个基站坐标为圆心,三基站到未知终端距离为半径可以画出三个相交的圆,如图下图所示,未知节点坐标即为三圆相交点。

三边定位法

然而,在实际测量中,往往由于测量的误差,使三个圆并不交于一点,而相交于一块区域,如下图所示。在此种情况下,便需用其他算法进行求解,如极大似然估计法,最小二乘法进行估计,或者使用三角形质心算法。

相交于一片区域

这里,我们的算法采用最小二乘法求近似解,并针对n个基站(n≥3),已知n个基站的坐标分别为 (),(),…,() ,未知终端坐标为() ,由以下步骤求解:

①:建立信标节点与未知节点距离方程组

信标节点与未知节点距离方程组

②:上边方程组为非线性方程组,用方程组中前n-1个方程减去第n个方程后,得到线性化的方程:

得到的线性化方程

其中:

A、b矩阵

③:用最小二乘法求解上边方程得:

结果

X 便是未知终端的坐标计算值。

3.2.2 加权三边定位算法

由无线信号强度渐变模型可以发现,当定位终端离基站距离越远时,接收到的RSSI值变化会越来越小,这就会导致距离越远,基站与定位终端的距离误差越大,相应的造成定位误差变大,由此,我们可以采取加权的思想,将距离小的(精确度高)赋予较大的权值,距离大的(精确度低)的赋予较小的权值。

首先将基站分组。对收集到的所有基站,经由id分为组n后,求组合数C(n,3),并对每组分别进行三边定位;接着根据距离越大定位误差越大的原则,赋以权值(为每个基站到定位终端测得的距离)。最后,由每个组合得到的结果加权得到最终的定位结果。

3.2.3 加权三角形质心定位算法

该算法的思想是对收集到的所有基站,经由id分为组n后,求组合数C(n,3),然后对每一个组合的三个基站,以每个基站坐标为圆心,测得的基站到定位终端距离为半径画圆,然后根据交点组成的三角形,求其质心,即为测得的终端坐标。大体如下:

加权三边

然后,根据距离越大定位误差越大的原则,赋以权值(为每个基站到定位终端测得的距离)。最后,由每个组合得到的结果加权得到最终的定位结果。 然而,由于误差的存在,且测量时位置并不在每个组合所构成的三角形中间位置,因此,当误差大时,往往所构成的圆是没有交点的(三个圆必须两两存在交点,否则不能用该方法)。

带推理公式版算法讲解:

Trilateration(三边测量)是一种常用的定位算法:

  1. 已知三点位置 (x1, y1), (x2, y2), (x3, y3)
  2. 已知未知点 (x0, y0) 到三点距离 d1, d2, d3

以 d1, d2, d3 为半径作三个圆,根据毕达哥拉斯定理,得出交点即未知点的位置计算公式:

( x1 - x0 )2 + ( y1 - y0 )2 = d12
( x2 - x0 )2 + ( y2 - y0 )2 = d22
( x3 - x0 )2 + ( y3 - y0 )2 = d32

解法推导

yyAvie

设未知点位置为 (x, y), 令其中的第一个球形 P1 的球心坐标为 (0, 0),P2 处于相同纵坐标,球心坐标为 (d, 0),P3 球心坐标为 (i, j),三个球形半径分别为 r1, r2, r3,z为三球形相交点与水平面高度。则有:

r12 = x2 + y2 + z2
r22 = (x - d)2 + y2 + z2
r32 = (x - i)2 + (y - j)2 + z2

当 z = 0 时, 即为三个圆在水平面上相交为一点,首先解出 x:

x = (r12 - r22 + d2) / 2d

将公式二变形,将公式一的 z2 代入公式二,再代入公式三得到 y 的计算公式:

y = (r12 - r32 - x2 + (x - i)2 + j2) / 2j

来自:https://github.com/megagao/IndoorPos
http://www.justinablog.com/archives/1066


http://chatgpt.dhexx.cn/article/DAdlYWMn.shtml

相关文章

Trilateration三边测量定位算法

Trilateration(三边测量)是一种常用的定位算法: 已知三点位置 (x1, y1), (x2, y2), (x3, y3)已知未知点 (x0, y0) 到三点距离 d1, d2, d3 以 d1, d2, d3 为半径作三个圆,根据毕达哥拉斯定理,得出交点即未知点的位置计…

python实现简单的三边测量定位

定位原理很简单,故不赘述,直接上源码,内附注释。(如果对您的学习有所帮助,还请帮忙点个赞,谢谢了) #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Wed May 1…

三边测量定位算法C语言实现

三边定位算法 三边定位算法简介 三个位置已知点(锚节点,圆心)以及其到另外一个未知点(待定位点)的距离即半径(不准确),求位置节点坐标的过程; 实际上(例如…

dvhop三边测量法MATLAB,基于非测距的DV-Hop定位算法改进

无线传感器网络是由大量随机分布的传感器节点组成,是一种分布式的、自组织的网络。其关键技术包括:网络拓扑控制、节点定位、时钟同步、数据融合、路由协议等。而节点定位问题则是无线传感器网络中的一个最为基本和重要的问题。目前,无线传感器网络定位算法可以分为基于测距…

matlab 三边测量,三边测量的定位算法,matlab转为c

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 %三边测量的定位算法 %dA,dB,dC为A,B,C到未知节点(假定坐标[x,y]未知)的模拟测量距离 A [0,0]; B [25,25*sqrt(3)]; C [50,0]; dA51/sqrt(3); dB51/sqrt(3); dC51/sqrt(3); %A,B,C为三个选定的信标节点,节点坐标已知(为便于防真…

定位算法-三边测距定位

作者:姜小明 github 日期:2020-09-06 关键字:RANSAC, Multilateral positioning, localization 上一篇文章(《使用RANSAC的鲁棒TDOA Chan定位算法》)中提到,如果我们知道当前位置到各个基站的距离&#x…

三边测距定位算法详解

关注、星标公众号,直达精彩内容 来源:平行机器人 | 赵得江 整理:李肖遥 通过GPS定位系统实现无人机的空中悬停定点飞行 “定位”这个概念我想大家并不陌生,可以说定位技术的迅猛发展给我们的日常生活带来了极大的便利。比如&#…

Android框架揭秘电子书pdf下载

Android框架揭秘下载链接: https://pan.baidu.com/s/1W1xrsC2-w5MgsrY-6i_cFg 提取码获取方式:关注下面微信公众号,回复关键字: 1119

Android初学之路—Android系统框架

从下到上依次为: 1.Linux内核(Linux Kernel) Android系统的最底层是基于Linux内核实现的,它负责硬件驱动、网络管理、电源管理、系统安全、内存管理等。例如它可以负责显示驱动、基于Linux的帧缓存驱动、键盘驱动、Flash驱动、摄…

《Android框架揭秘》——2.2节搭建Android平台编译环境

本节书摘来自异步社区《Android框架揭秘》一书中的第2章,第2.2节搭建Android平台编译环境,作者 金泰延 , 宋亨周 , 朴知勋 , 李白 , 林起永,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.2 搭建Android平台编译环境Android框架揭秘…

《Android框架揭秘》——2.3节搭建Android SDK开发环境

本节书摘来自异步社区《Android框架揭秘》一书中的第2章,第2.3节搭建Android SDK开发环境,作者 金泰延 , 宋亨周 , 朴知勋 , 李白 , 林起永,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.3 搭建Android SDK开发环境Android框架揭秘…

《Android框架揭秘》——2.4节开发Android应用程序

本节书摘来自异步社区《Android框架揭秘》一书中的第2章,第2.4节开发Android应用程序,作者 金泰延 , 宋亨周 , 朴知勋 , 李白 , 林起永,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.4 开发Android应用程序Android框架揭秘在上一节…

《Android框架揭秘》——2.1节主机环境构成

本节书摘来自异步社区《Android框架揭秘》一书中的第2章,第2.1节主机环境构成,作者 金泰延 , 宋亨周 , 朴知勋 , 李白 , 林起永,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.1 主机环境构成Android框架揭秘虽然Android开发环境多…

《Android框架揭秘》——1.2节通过启动过程分析Android Framework

本节书摘来自异步社区《Android框架揭秘》一书中的第1章,第1.2节通过启动过程分析Android Framework,作者 金泰延 , 宋亨周 , 朴知勋 , 李白 , 林起永,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.2 通过启动过程分析Android Fra…

《Android框架揭秘》——2.5节应用程序Framework源码级别调试

本节书摘来自异步社区《Android框架揭秘》一书中的第2章,第2.5节应用程序Framework源码级别调试,作者 金泰延 , 宋亨周 , 朴知勋 , 李白 , 林起永,更多章节内容可以访问云栖社区“异步社区”公众号查看 2.5 应用程序Framework源码级别调试An…

《Android框架揭秘》读书笔记--在Java中调用C库函数

简介 以下试验在Ubuntu16.04 x86,jdk安装:sudo apt-get install openjdk-9-jdk-headless,原书介绍的是在win系统实现。 步骤 第一步:编写Java代码第二步:编译Java代码第三步:生成C语言头文件第四步&#…

Android 框架揭秘 --读书笔记

Android 框架揭秘 Insied the Android Framework 转载于:https://www.cnblogs.com/drduan/p/4788554.html

android框架揭秘!Android开发者跳槽指南一线互联网公司面经总结

前言概要: 1,进大公司还是小公司,真的有的选? 2,校招的潜规则 3,校招想进大厂怎么办 4,社招的潜规则 5,社招想进大厂怎么办? 面试部门 岗位:商业化 - 高级 …

《Android框架揭秘》——导读

本节书摘来自异步社区《Android框架揭秘》一书中的目录,作者 金泰延 , 宋亨周 , 朴知勋 , 李白 , 林起永,更多章节内容可以访问云栖社区“异步社区”公众号查看 目 录 第1章 Android Framework概要 1.1 Android源代码组成1.2 通过启动过程分析Android…

Android框架揭秘读书笔记

Android启动过程 1.linux内核,加载linux内核 2 init 进程对各种设备进行初始化, 执行Daemon进程,管理USB、ADB链接管理器、Debugger系统、rild管理无线通信链接 Content Manager进程,提供运行Android各种系统服务信息 Media …