算法
文章平均质量分 80
奔跑的橘子
朝闻道,夕死可矣。私信可能无法及时回复,公众号:我是小强何故乱翻书,可关注后私信我
展开
-
关于使用快慢指针进行单向链表环存在性判定的若干问题的进一步思考
面试官问这个问题的目的是什么快慢指针的工作原理快慢指针究竟几步可以定位环快指针的速度只能是双倍速么其他判定单向链表环路的方法原创 2022-01-14 09:09:22 · 595 阅读 · 0 评论 -
python sympy在无人机EKF建模中的应用
使用python推导雅可比矩阵使用python进行建模如无人机PX4中EKF模型的生成原创 2020-03-15 16:05:16 · 967 阅读 · 0 评论 -
异常数据(粗大误差)处理-3西格玛准则 及其失效原因分析及解决办法
3σ法则是一种基于统计的异常数据剔除算法,简单使用。可是这种算法在数据量比较多的时候是适用的,当数据量较少时效果不佳,甚至会失效。为何呢?我们可以从理论上推导出其失效的点数。原创 2013-08-21 20:19:41 · 29233 阅读 · 0 评论 -
SBAS 电离层修正中的双线性插值方法
文章目录线性插值四点双线性插值三点插值还有一步点击这里可以阅读rtklib中的SBAS相关实现解读,其中使用SBAS进行电离层修正时,首先要计算电离层切入点。但是有一个问题,SBAS不可能下发电离层上无限个点的修正信息,而是一个一个的特征点,这样整个电离层球面就会被分成一个个的网格区域。正因如此,电离层切入点的修正值需要使用插值获取。线性插值在正式开始我们的插值工作之前,有必要花费半分钟的时间熟悉一下线性插值。如下图,我们如果知道两个点的坐标(x1,y1)(x_1,y_1)(x1,y1)和(x0,原创 2021-05-28 23:07:07 · 910 阅读 · 0 评论 -
当SBAS遇上rtklib
/* satellite position and clock by broadcast ephemeris -----------------------*/static int ephpos(gtime_t time, gtime_t teph, int sat, const nav_t *nav, int iode, double *rs, double *dts, double *var, int *svh){ else if (sys==SYS_SB原创 2021-05-26 23:14:02 · 1870 阅读 · 2 评论 -
精密星历介绍与使用
文章目录精密星历精密星历下载精密星历格式rtklib 精密星历应用插值处理使用精密星历解算与广播星历的对比精密星历解算结果广播星历解算结果精密星历SP3精密星历格式,即The Extended Standard Product 3 Orbit Format.精密星历下载点击此处进行精密星历下载以下图片显示的是下载2005-04-02的精密星历,如此可下载这一天的精密星历。精密星历格式#aP2005 4 2 0 0 0.00000000 96 ORBIT IGb00 HLM原创 2021-05-24 20:06:45 · 9074 阅读 · 8 评论 -
GNSS速度解算的三种方法
结合rtklib讲解一下常用的三种GNSS速度解算的方法原创 2021-05-21 23:14:11 · 6668 阅读 · 3 评论 -
rtklib2.4.3 b34 单点定位的一个bug
文章目录单点定位部分的一个问题老生常谈的root cause为何如此修改于是改动单点定位部分的一个问题这是一个本次更新引入的新问题,以前是没有的,如下图:如果没有对代码重新编译则不会遇到本文将要提到的问题,因为release版本的程序是不会有问题的如果对代码进行debug,那么也不会遇到这个问题如果尝试直接运行debug版本的程序,那么大概率会出现此问题老生常谈的root cause这个issue是由局部变量没有初始化引起的,因此想要fix这个issue也很简单,只要将这四个变量dion原创 2021-04-08 23:12:28 · 2120 阅读 · 0 评论 -
rtklib2.4.3 b34的一个与编译器有关的bug
最近在使用rtklib时遇到一个问题,困扰了许久,最后总算用歪门邪道的方式解决了。issue如下重新基于rtklib的代码编译一个application,解算数据,一切正常。下一步,将rtklib中的trace去掉,再编译,解算。好的,问题出现,不能解算了。是真的将所有trace去掉,不是将level设置为0,或者将trace name设置为空,或者将函数体注释掉。这些方式并不能真正去掉trace,并且这些情况重新编译的话,是可以正常解算的。为什么这些方式不能真正去掉trace?因为,这些方法原创 2021-02-27 15:01:42 · 711 阅读 · 2 评论 -
rtklib新版本2.4.3 b34测试对比
2020/12/30 ,也就是去年末,rtklib终于更新了一个新版本。clone下来测试了一下。测试数据使用148小时连续采集的数据,采集条件很差,解算效果不太好。以下是对比结果。// 采集过程中,每小时将文件分割一次原创 2021-01-13 22:56:53 · 2410 阅读 · 8 评论 -
使用PX4的ECL进行多传感器数据融合的后处理
- ecl是开源无人机项目PX4使用的算法库,使用ekf(扩展卡尔曼滤波)进行imu等多种传感器的数据融合- 然而ecl不提供数据后处理功能- 能使用ecl进行多传感器数据融合的后处理是很有必要的,这样便于参数调试,和二次开发的调试,从而缩短开发周期,降低开发成本- 鉴于以上几点作者fork了ecl的项目,并添加了后处理功能- 在添加后处理功能时的基本原则是,尽量做到不更改ecl的任何代码,实际上却是没有更改任何代码文件- 实际上整个更改只是在CMakeLists.txt中添加了下边这一行原创 2021-01-05 22:59:28 · 1138 阅读 · 1 评论 -
好消息!好消息! PX4-ECL 以python替代matlab
PX4-ECL或许是同类项目中最优秀的(或者之一吧),从事无人机滤波开发或者类似多传感器融合的开发者很多都读过这个项目的代码。github地址但这个项目一直以来有个遗憾,卡尔曼滤波的矩阵求解部分是用matlab完成的,如下图。这么做有什么问题呢?顺便说一下,之前要通过PX4-ECL\EKF\matlab\scripts\Inertial Nav EKF\GenerateNavFilterEquations.m 来建模和生成c++矩阵。matlab是收费的,闭源的,与px4的开源,显得有点儿格格不原创 2020-12-23 21:39:38 · 737 阅读 · 0 评论 -
看懂卡尔曼滤波1 g-h滤波
这是一篇译作,原文地址,但是似乎没有找到比这个写的更详细,更通俗的介绍卡尔曼滤波的了。详细到令人发指的地步了,更好的是用Jupter notebook写的,可以运行最近很懒除了翻译这个没写什么原创,主要也是最近正在投入科幻小说秦始皇陵和历史武侠雪夜箫声的创作,有兴趣的可以关注的我公众号这篇文章的最后有二维码,又一次无耻的打了广告>_<文章目录g-h 滤波思想实验g-h 滤波符号练习: 写一个通用算法答案及探讨ggg hhh 的选择练习: 写一个函数生成量测数据答案讨论练习: 糟糕初.翻译 2020-09-01 23:06:49 · 2280 阅读 · 2 评论 -
几种滑动平均滤波器的c++模板实现
几种滑动平均滤波的c++模板实现均值滤波c++模板实现原创 2020-05-17 18:19:48 · 2799 阅读 · 0 评论 -
迭代器分类标签及用途
什么是 std::random_access_iterator_tag还有哪些迭代器分类标签stl中如何针对不同迭代器做算法选择原创 2020-05-03 16:01:56 · 862 阅读 · 0 评论 -
c++ sort解读
文章目录函数原型sort代码快速排序阶段堆排序阶段插入排序c++ 中sort函数的具体实现在不同编译器下不同,本篇代码来自msvc编译器,版本号14.24.28314函数原型首先可以看到sort函数有两个原型,如下,template <class RandomAccessIterator> void sort (RandomAccessIterator first, Ran...原创 2020-05-02 16:10:58 · 819 阅读 · 0 评论 -
四元数姿态解算算法基础
文章目录姿态的表示方法四元数表示姿态的物理意义使用四元数进行载体姿态更新方程四元数微分方程四元数初始值确定姿态的表示方法载体姿态有多种表示方法,常见的三种:欧拉角,姿态矩阵,四元数。欧拉角的物理意义比较直观,即航向角ψ\psiψ,俯仰角θ\thetaθ,横滚角γ\gammaγ,分别是导航系到载体系的三个旋转角度。姿态矩阵可以由欧拉角直接计算得到,即三个角度对应的转换矩阵依相乘。注意的是...原创 2020-04-19 14:25:26 · 14886 阅读 · 14 评论 -
rtklib三之relpos rtkpo庖丁解牛
rtklib中的高精度相对定位relpos比较难懂,这里理一理代码,看完后想必再读代码,就会条例很多了。原创 2020-04-09 22:50:51 · 8689 阅读 · 4 评论 -
rtklib之URA
rtklib 用户测距精度计算,什么是URA原创 2020-04-07 22:57:53 · 2609 阅读 · 4 评论 -
rtklib一之带你一步一步读懂rtklib 单点定位代码及算法
rtklib中的单点定位算法即代码的解读,读此对单点定位来说想必就够了,如果哪个地方写的不明白,不详细或者错了,请留言。原创 2020-04-05 13:52:54 · 20449 阅读 · 18 评论 -
rtklib二之载波相位差分算法详解
rtklib中 的高精度相对定位部分,即载波相位差分(rtkpos这个函数)使用的是EKF算法,这里一步一步详细介绍一下。如果你已经有了kalman滤波的相关知识,相信很快就可以浏览完了。原创 2020-04-03 22:21:45 · 10320 阅读 · 31 评论 -
一个非常非常简单的UKF入门程序实例
UKFUKF为Unscented Kalman Filter简写,中文可翻译为无损卡尔曼滤波,本滤波是为了解决非线性问题存在的(也可用于线性模型),即结合了UT变换和标准卡尔曼滤波的一种方法。UKF原理的通俗解释其实对于状态的一步递推和量测的一步递推,是不存在非线性带来的难题的。考虑以下非线性模型:xk+1=f(xk)+wx_{k+1}=f(x_{k})+wxk+1=f(xk)+wy...原创 2020-02-18 21:08:45 · 4625 阅读 · 0 评论 -
PX4姿态解算磁偏补偿
文章目录PX4磁偏补偿磁偏数据库磁偏计算PX4磁偏补偿PX4 姿态解算中可以通过参数直接设置磁偏角,如果有GPS也可以通过GPS坐标查询。// px4 attitude_estimator_q.cpp - update_parametersfloat mag_decl_deg = 0.0f;param_get(_params_handles.mag_decl, &mag_decl...原创 2019-11-07 21:38:46 · 907 阅读 · 0 评论 -
基于扩展卡尔曼滤波(EKF)和低成本传感器的AHRS实现
一种基于低成本传感器的无人机姿态计算方法使用ekf模型原创 2018-05-05 21:28:36 · 4429 阅读 · 9 评论 -
四元数姿态解算基础及数学模型
姿态的表示方法载体姿态有多种表示方法,常见的三种:欧拉角,姿态矩阵,四元数欧拉角的物理意义比较直观,即航向角,俯仰角,横滚角,分别是导航系到载体系的三个旋转角度姿态矩阵可以由欧拉角直接计算得到,即三个角度对应的转换矩阵相乘(注意顺序,导航系到载体系是按照航向角,俯仰角,横滚角的顺序变换的,所以导航系到载体系变换时,三个矩阵相乘的顺序,应该是横滚*俯仰*航向*导航系坐标矢量),因此结果较之欧拉角稍微...原创 2017-12-18 15:40:40 · 25797 阅读 · 0 评论 -
GPS几种基本定位模式原理概述及精度介绍
GPS几种基本定位模式原理概述及精度介绍GPS几种基本定位模式原理概述及精度介绍单点定位伪距差分RTK结论 为说明GNSS的几种基本定位模式的基本原理及精度,笔者采集了1个小时的静态数据,板卡使用novatel 628板卡,采集的数据中包含range和星历数据,通过解算这同一段数据来直观给出各模式的精度,并简略介绍一下各模式的算法原理,文中将验证以下几种模式:...原创 2018-03-08 22:10:26 · 24313 阅读 · 4 评论 -
matlab求解扩展卡尔曼滤波(EKF)中的雅克比矩阵
扩展卡尔曼滤波需要求解雅克比矩阵,matlab中求解雅克比矩阵的方法如下:假设我们有以下非线性模型: dis=n2+e2+d2−−−−−−−−−−√dis=n2+e2+d2dis = \sqrt{n^2+e^2+d^2} cog=tan−1(en)cog=tan−1(en)cog = tan^{-1}(\frac e n)matlab中可通过如下方法求解雅克比矩阵:sy...原创 2018-05-05 21:43:39 · 8260 阅读 · 0 评论 -
定时采样增量法更新四元数-px4 EKF2中使用的四元数更新算法
角增量关于欧拉角四元数的物理意义,及四元数微分方程的推导等部分有兴趣的可查看四元数基础. 在四元数基础中,我们提到了使用陀螺仪输出的角速度进行四元数的更新,但是实际使用中,陀螺仪的输出并不是角速度,而是采样间隔内的角增量。PX4中使用以下算法进行四元数更新。 若通过角增量和采样间隔计算角速度会造成噪声的微分放大基于角增量的四元数更新算法qk+1=qk⨂δqqk+1=qk⨂δ...原创 2018-08-01 22:25:45 · 2802 阅读 · 1 评论 -
均值滤波
几种常见的均值滤波算法,移动平均,加权平均和指数平均原创 2019-05-01 22:44:10 · 16288 阅读 · 0 评论 -
IMU误差模型
零偏在静置状态下采集一段加速度数据,理论上此时(ax,ay,az)(a_x,a_y,a_z)(ax,ay,az)=(0,0,g)(0,0,g)(0,0,g). 从下图可以看出,加速度计每个轴的输出都被拉偏了,这个偏移值就是加速度零偏。上电重复性IMU设备每次上电启动,上述零偏误差值都不一样,这就造成了上电重复误差。随机误差假设我们已经估计出加速度计的零偏值,并将其从加速度计输出...原创 2019-04-25 22:22:00 · 6895 阅读 · 0 评论 -
GPS/BDS周跳探测方法
伪距载波相位残差法δtRj=λjδtϕj−λjδtNj+ϵδtRj=λjδtϕj−λjδtNj+ϵ\delta_tR_j=\lambda_j\delta_t\phi_j-\lambda_j\delta_tN_j+\epsilon 在不存在周跳的情况下,整周模糊度的时间差分值λjδtNjλjδtNj\lambda_j\delta_tN_j应该是0,所以δtRj−λjδtϕjδtRj−λjδtϕ...原创 2018-05-08 22:03:11 · 8658 阅读 · 1 评论