多卫星定位算法

news2024/11/22 17:56:16

多卫星定位算法

现已知有N(N>=4)个卫星,每个卫星的坐标用 X s {X_s} Xs表示,其对应的伪距用 r r r表示。
由于伪距不是准确的、真实的距离,它有所干扰。所以我们可以再根据三维空间中的距离公式,另外估计卫星和用户的距离为 r ^ \hat r r^。公式如下:
r ^ = F ( X ) + c δ t \hat r = F\left( X \right) + c\delta t r^=F(X)+t
此时注意此时的 X X X X s {X_s} Xs都是三维矢量(vector), X X X表示用户的坐标。
X = ( x y z ) X = \left( \begin{array}{l} x\\ y\\ z \end{array} \right) X= xyz
其中 c c c是光速 ( m / s ) (m/s) (m/s) δ t \delta t δt是卫星和接收机的时间差。 F ( X ) F\left( X \right) F(X)的距离公式如下:
F ( X ) = ( ( x − x s ) 2 + ( y − y s ) 2 + ( z − z s ) 2 ) 1 / 2 F\left( X \right) = {\left( {{{\left( {x - {x_s}} \right)}^2} + {{\left( {y - {y_s}} \right)}^2} + {{\left( {z - {z_s}} \right)}^2}} \right)^{1/2}} F(X)=((xxs)2+(yys)2+(zzs)2)1/2
F ( X ) F\left( X \right) F(X)泰勒展开(Taylor Expansion):
F ( X ) = F ( X 0 ) + d F ( X 0 ) d X ( X − X 0 ) + o ( X ) F\left( X \right) = F\left( {{X_0}} \right) + \frac{{dF\left( {{X_0}} \right)}}{{dX}}\left( {X - {X_0}} \right) + o\left( X \right) F(X)=F(X0)+dXdF(X0)(XX0)+o(X)
再对 d F ( X 0 ) d X ( X − X 0 ) \frac{{dF\left( {{X_0}} \right)}}{{dX}}\left( {X - {X_0}} \right) dXdF(X0)(XX0)进行多元展开:
d F ( X 0 ) d X ( X − X 0 ) = ∂ ( ( x − x s ) 2 + ( y − y s ) 2 + ( z − z s ) 2 ) 1 / 2 ∂ x ∣ x = x 0 ( x − x 0 ) + ∂ ( ( x − x s ) 2 + ( y − y s ) 2 + ( z − z s ) 2 ) 1 / 2 ∂ y ∣ y = y 0 ( y − y 0 ) + ∂ ( ( x − x s ) 2 + ( y − y s ) 2 + ( z − z s ) 2 ) 1 / 2 ∂ z ∣ z = z 0 ( z − z 0 ) = x 0 − x s F ( X 0 ) ( x − x 0 ) + y 0 − y s F ( X 0 ) ( y − y 0 ) + z 0 − z s F ( X 0 ) ( z − z 0 ) = x 0 − x s F ( X 0 ) δ x + y 0 − y s F ( X 0 ) δ y + z 0 − z s F ( X 0 ) δ z \begin{array}{l} \frac{{dF\left( {{X_0}} \right)}}{{dX}}\left( {X - {X_0}} \right) = \frac{{\partial {{\left( {{{\left( {x - {x_s}} \right)}^2} + {{\left( {y - {y_s}} \right)}^2} + {{\left( {z - {z_s}} \right)}^2}} \right)}^{1/2}}}}{{\partial x}}{|_{x = {x_0}}}\left( {x - {x_0}} \right) + \frac{{\partial {{\left( {{{\left( {x - {x_s}} \right)}^2} + {{\left( {y - {y_s}} \right)}^2} + {{\left( {z - {z_s}} \right)}^2}} \right)}^{1/2}}}}{{\partial y}}{|_{y = {y_0}}}\left( {y - {y_0}} \right) + \frac{{\partial {{\left( {{{\left( {x - {x_s}} \right)}^2} + {{\left( {y - {y_s}} \right)}^2} + {{\left( {z - {z_s}} \right)}^2}} \right)}^{1/2}}}}{{\partial z}}{|_{z = {z_0}}}\left( {z - {z_0}} \right)\\ \\= \frac{{{x_0} - {x_s}}}{{F\left( {{X_0}} \right)}}\left( {x - {x_0}} \right) + \frac{{{y_0} - {y_s}}}{{F\left( {{X_0}} \right)}}\left( {y - {y_0}} \right) + \frac{{{z_0} - {z_s}}}{{F\left( {{X_0}} \right)}}\left( {z - {z_0}} \right)\\ \\= \frac{{{x_0} - {x_s}}}{{F\left( {{X_0}} \right)}}\delta x + \frac{{{y_0} - {y_s}}}{{F\left( {{X_0}} \right)}}\delta y + \frac{{{z_0} - {z_s}}}{{F\left( {{X_0}} \right)}}\delta z \end{array} dXdF(X0)(XX0)=x((xxs)2+(yys)2+(zzs)2)1/2x=x0(xx0)+y((xxs)2+(yys)2+(zzs)2)1/2y=y0(yy0)+z((xxs)2+(yys)2+(zzs)2)1/2z=z0(zz0)=F(X0)x0xs(xx0)+F(X0)y0ys(yy0)+F(X0)z0zs(zz0)=F(X0)x0xsδx+F(X0)y0ysδy+F(X0)z0zsδz
忽略泰勒展开的高阶项之后,再将以上的等式矩阵化得到:
在这里插入图片描述

以上只是对于一个卫星而言,如果拓展多个卫星就得到:
在这里插入图片描述

令其等于 R ^ = A δ X \hat R = A\delta X R^=AδX
再根据最小二乘法的公式:
L ( X ) = ∥ R ^ − R ∥ 2 L\left( X \right) = {\left\| {\hat R - R} \right\|^2} L(X)= R^R 2
得到:
L ( δ X ) = ∥ A δ X − ( R − F ( X 0 ) ) ∥ 2 = δ X T A T A δ X − 2 ( R − F ( X 0 ) ) T A δ X + ( R − F ( X 0 ) ) T ( R − F ( X 0 ) ) \begin{array}{l} L\left( {\delta X} \right) = {\left\| {A\delta X - \left( {R - F\left( {{X_0}} \right)} \right)} \right\|^2}\\ \\ = \delta {X^T}{A^T}A\delta X - 2{\left( {R - F\left( {{X_0}} \right)} \right)^T}A\delta X + {\left( {R - F\left( {{X_0}} \right)} \right)^T}\left( {R - F\left( {{X_0}} \right)} \right) \end{array} L(δX)=AδX(RF(X0))2=δXTATAδX2(RF(X0))TAδX+(RF(X0))T(RF(X0))
δ X \delta X δX推导出以下公式:
δ X = ( A T A ) − 1 A T ( R − F ( X 0 ) ) X = X 0 + δ X \begin{array}{l} \delta X = {\left( {{A^T}A} \right)^{ - 1}}{A^T}\left( {R - F\left( {{X_0}} \right)} \right)\\ \\X = {X_0} + \delta X \end{array} δX=(ATA)1AT(RF(X0))X=X0+δX
最后,由于泰勒展开时 X 0 {X_0} X0是任意取的,所以我们并不能确定它就是 X X X附近,而如果 X 0 {X_0} X0不在 X X X附近,再忽略掉泰勒展开后高阶项将导致巨大的误差。为了解决这个问题,我们将计算得到的 X X X当成 X 0 {X_0} X0循环代入以上这些公式,直到本次得到 X X X值和上次得到 X X X差别不大,才跳出循环。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1038451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Visual Studio Cpp CLR C# 替换

1、首先将文件中所有都替换 你需要的名字 替换为整个解决方案 2、新建工程取名 Laserbeam_upper 3、把原工程下的cpp放进来,并改名Laserbeam_upper 4、在这里逐步添加 属性表配置opencv 5、cpp需要修改的两个地方 6、CLR新建和添加 选类库新建、然后直接粘贴进来…

Learn Prompt-Prompt 高级技巧:API-Bank AgentBench

模型评估是Agent学习过程中至关重要的一环。通过分析数据来评估Agent的能力,可以客观地衡量它在特定任务或领域中的表现。数据评估是不断迭代和改进的基础。通过反复评估和分析数据,Agent可以逐步改进自身,并不断优化其能力。数据评估还可以将…

浅谈为什么多态只能是指针或引用

其实在很早之前,我一直没有注意到这个问题,直到今天碰见了一道题,顺便前面的博客中,继承写到,子类中不包含父类,子类只是继承了父类的成员变量和函数,由这一点,引发了我对切片以及赋…

I/O设备管理

目录 I/O设备管理(1) 第一节 I/O设备管理的基本概念 一、I/O设备管理的任务 二、I/O设备分类 三、I/O设备管理与文件管理的关系 第二节 I/O硬件和I/O软件的组成 一、I/O硬件组成 二、I/O软件组成 三、设备独立性 第三节 I/O设备控制方式 一…

虚拟机安装 centos

title: 虚拟机安装 centos createTime: 2020-12-13 12:00:27 updateTime: 2020-12-13 12:00:27 categories: linux tags: 虚拟机安装 centos 路线图 主机(宿主机) —> centos --> docker --> docker 镜像 --> docker 容器 — docker 服务 1.前期准备 一台 主机 或…

图像相关名词概述

颜色模式 通过赋予C的不同维度不同的含义,可以用来描述不同的颜色空间。颜色模式,是将某种颜色表现为数字形式的模型,或者说是一种记录图像颜色的方式。本单元主要讲述两个常用的颜色模式:RGB,HSV。 RGB模式是工业界的…

数字IC笔试千题解--多选题篇(三)

前言 出笔试题汇总,是为了总结秋招可能遇到的问题,做题不是目的,在做题的过程中发现自己的漏洞,巩固基础才是目的。 所有题目结果和解释由笔者给出,答案主观性较强,若有错误欢迎评论区指出,资料…

机器学习(19)---XGBoost入门

XGBoost 一、概述1.1 使用XGBoost库1.2 XGBoost的三大板块 二、集成算法及重要参数2.1 概述2.2 XGBoost的简单建模2.3 n_estimators学习曲线2.4 方差与泛化误差2.5 重要参数subsample2.6 迭代决策树:重要参数eta 三、XGBoost的智慧3.1 概述3.2 XGB的目标函数&#x…

26. 图论 - 树

文章目录 树生成树最小生成树图与人工智能人工智能数学基础Hi,你好。我是茶桁。 这一节课是我们AI秘籍整个数学篇的最后一节课。同样的,这节课的概念还是比较重要的。我们要来了解一下「树」。 树 树其实是图的一种,首先呢它是一个连通图,是一个不含圈的连通图。 什么叫…

开机自启动Linux and windows

1、背景 服务器由于更新等原因重启,部署到该服务上的响应的应用需要自启动 2、Linux 2.1 方式一 编写启动应用的sh脚本授权该脚本权限 chmod 777 xxx.sh 修改rc.loacl 位置:/etc/rc.local 脚本:sh /home/xxxx.sh & 授权rc.local …

项目管理和问题跟踪工具Redmine

【勘误】:网友 Bnake 指出,用青龙面板实现阿里云盘每日签到 一文中,新建变量值时,变量名应该为 refreshToken,而不是截图中的 refresh_Token,非常感谢他的仔细和认真~ 什么是 Redmine ? Redmine…

云计算与大数据——Spark的安装和配置

云计算与大数据——Spark的安装和配置 Spark的简单介绍: Apache Spark是一个基于内存的分布式计算框架,它提供了高效、强大的数据处理和分析能力。与传统的Hadoop MapReduce相比,Spark的主要优势在于其能够将数据集缓存在内存中&#xff0c…

Abaqus多孔材料、多孔介质、双相材料、随机三维多孔结构建模插件:Random Porous Structure 3D

插件介绍 Random Porous Structure 3D - AbyssFish 插件可在Abaqus软件内生成三维多孔结构,可用于两相材料或多孔介质的模拟等。 插件可指定孔隙的分布概率、生长概率、孔隙率、平滑范围等参数,其参数控制原理可参考四参数随机生长法(QSGS…

开源C# Winform Scada 上位机系统

开源Winform Scada系统 功能展示C#源码程序说明下载程序源码获取 功能展示 本软件目前包含: 常用PLC通讯控件, 常用IO读写控件, 权限过滤, 用户管理, 日志记录, 报警记录. 使用方式: 在VS2022里面拖放控件, 填写控件属性,完成组态.即可成为一个完整的上位机. C#源码 程序说明…

CSS 滚动驱动动画 view-timeline (view-timeline-name ❤️ view-timeline-axis )

view-timeline 我们之前在 scroll() 中提到了一个因为绝对定位导致滚动无效的问题, 并使用 scroll-timeline 成功解决了这个问题, 而 scroll-timeline 起到的作用就是指定到底是哪个元素提供 scroll progress timeline. 与此相似, view-timeline 定义了一个具名的 view progre…

25504-2010 冰葡萄酒 知识梳理

声明 本文是学习GB-T 25504-2010 冰葡萄酒. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了冰葡萄酒的术语和定义、要求、分析方法、检验规则、标签标识和包装、运输、贮存。 本标准适用于冰葡萄酒的生产、检验和销售。 2 规范…

【Servlet】Servlet API 详解

Servlet API 详解 一. HttpServlet1. 核心方法2. 代码示例: 处理 GET 请求3. 关于乱码问题4. 代码示例: 处理 POST 请求 二. HttpServletRequest1. 核心方法2. 代码示例: 打印请求信息3. 代码示例: 获取 GET 请求中的参数4. 代码示例: 获取 POST 请求中的参数(1)5. 代码示例: 获…

Ubuntu修改下载源

1、问题情景 (1)在虚拟机VMware中安装Ubuntu后,可以正常上网。 (2)可以ping www.baidu.com检查网路是否联通。 (3)连通后下载软件是总是下载失败。 (4)环境 Ubuntu: Ubuntu 22.04.2 LTSVMware: 17.0.0 2、解决方法_修改下载源 (1)打开Ubuntu。 (2)点击“显示…

基于微信小程序的在线视频课程学习平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言用户微信端的主要功能有:管理员的主要功能有:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉…

【数据结构】基本概念和术语

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 🌳1.数据 数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合.是计算机程序加工的"原料". 数据不仅包…