- 博客(48)
- 资源 (20)
- 问答 (2)
- 收藏
- 关注
转载 十一、滤波器基本原理
1. 概述滤波器是组合导航的核心,是把惯性导航的解算结果和其他传感器输出的观测结果连接在一起的纽带,只有借助它,才能使二者优势互补,得到一个精确、稳定的导航系统。组合导航中使用的滤波器有很多,常见的有 卡尔曼滤波(KF)、扩展卡尔曼滤波(EKF)、迭代扩展卡尔曼滤波(IEKF)、无迹卡尔曼滤波(UKF)、粒子滤波(PF),本篇文章会一一介绍他们的原理,只是在这之前,我们需要回忆一下以前学过的一些参数估计的基础知识。2. 参数估计思想理解参数估计思想,重点要区分的是三个方法:极大似然.
2020-11-30 22:33:10 2493 1
转载 十、惯性导航误差传播规律
一、概述上一篇文章我们介绍了惯性导航的解算方法,也即由 陀螺仪和加速度计原始的角速度和加速度信息解算得到惯导的位置、速度、姿态等信息。在实际系统中,由于陀螺仪和加速度计信息具有误差,那么必然导致导航误差的逐渐增大,我们需要通过理论形式给出它的误差传播方程。这样做主要是基于两个目的,其一是,当我们能够定量计算导航误差和器件误差之间的关系时,那么设计导航系统应该选用什么精度等级的器件就有依据了。其二是,在组合导航中,误差传播方程其实就是滤波器的状态方程,必然要有的。二、误差方程推导.
2020-11-30 19:46:00 2806
转载 八、IMU器件温度漂移补偿
感谢大神分享:https://zhuanlan.zhihu.com/p/1449535571. 概述温补的本质是系统辨识。之前我们在介绍标定的时候,也说过一句类似的话“标定的本质是参数辨识”。这两者之间相似又不同。参数辨识是指已知误差模型,去估计各误差量的实际值是多少,而系统辨识在做参数辨识之前,还要做模型辨识,因为器件偏差随温度变化的模型是未知的,不知道有几个变量,也不知道是几阶模型,这个事情就变得不那么简单。按照搞技术的套路,事情越复杂,业界出现的方法就越多,我们一一来看..
2020-11-30 18:39:13 5821 3
转载 七、IMU器件误差标定方法总结
感谢大神分享:https://zhuanlan.zhihu.com/p/1414031561. 概述我们通过三篇文章,分别介绍了分立级标定、系统级标定和基于迭代优化的标定(半系统级标定),了解了他们各自的原理、方法和实现方式。但是,我们的最终目的是完成标定任务,具体来讲,就是当面对多种方法的时候,应该怎么选择的问题。为了完成这一步,我们需要了解的是各种标定方法有哪些优缺点,以及需要哪些条件。2. 优缺点分析前面三篇文章,我们只介绍了三种方法的实现原理,这种介绍是以理想情况..
2020-11-30 17:05:55 3589
转载 六、IMU误差标定之基于迭代优化的标定
感谢大神分享:https://zhuanlan.zhihu.com/p/137551862一、 概述前两篇文章,我们分别介绍了 分立级标定和系统级标定,所谓 分立级标定,就是以转台输入为基准,通过转动转台构建方程,对各个参数分别独立求解。所谓 系统级标定,就是把所有误差参数看做一个导航系统的一部分,通过观测导航误差,反推出器件误差。今天介绍的 基于迭代优化的标定,其思想介于两者之间。由于同样不使用转台,它不能像分立级那样能把每个参数独立拆开,但也没有像系统级那样,把所有参数都扔到一.
2020-11-30 16:42:59 1283
转载 五、IMU误差标定之系统级标定
感谢大神分享:https://zhuanlan.zhihu.com/p/1352301331. 概述上一篇文章我们一起讨论了基于转台的标定,其实它还有另一个名字,叫 分立级标定。分立级 这个名字是从英文单词“discrete”翻译过来,翻译之后可能就变得不是很直观,它实际表达的意思是“互不关联的”。在标定的任务里,这个互不关联,指的就是各个误差参数的标定可以互不干扰,因为从原理上,我们只需要不断地构建方程,就可以把其他变量抵消掉,提取出我们需要的参数,而不需要知道其他参数的值是多少。.
2020-11-30 16:09:03 2751
转载 四、IMU误差标定之基于转台的标定
感谢大神分享:https://zhuanlan.zhihu.com/p/1313425301. 概述标定的本质是参数辨识。首先明确哪些参数可辨识,其次弄清怎样辨识。参数包括陀螺仪和加速度计各自的零偏、标度因数、安装误差。辨识就比较丰富了,如果让各位先不局限于标定任务,想一想你了解的辨识方法有哪些,常见的回答应该有这样几个:1)解析法或最小二乘2)滤波(kalman等)3)梯度下降迭代优化确实没错,标定里用的就是这些方法。这说明标定其实就是一个普通的参数辨识问题,它和你遇.
2020-11-30 14:56:12 5428 1
转载 三、Allan方差分析
1. 概述在上一篇文章,我们对器件误差的成分进行了分析,并且介绍了最主要的五种误差成分在“方差-时间间隔”的双对数曲线上的直观表现及产生这种表现的原理。同时也提到,在两种误差分析方法中,Allan方差方法比直接方差统计要更有优势,所以本篇文章我们就一起讨论下Allan方差的具体实现方式。2. 实现方式Allan方差识别误差的方式是画“方差-时间间隔”双对数曲线,这包含三方面:方差、时间间隔、双对数(好像是一句废话,哈哈)。在测试中,我们按照一定的周期T采集了一段时间数据,根据这些离散
2020-11-30 13:35:33 11053 1
转载 二、器件误差分析理论
感谢大神分享:https://zhuanlan.zhihu.com/p/125554723一、概念及意义拿到一个IMU,首要任务是对其器件误差进行分析,这包括陀螺仪的误差和加速度计的误差。其实这两者的误差分析基本类似,所以我们就以陀螺仪为准来介绍误差成分、原理及分析方法。加速度计的误差分析直接照葫芦画瓢就行。陀螺仪的误差主要包括这样几项:1. 量化噪声量化噪声是数字传感器必然出现的噪声,我们通过AD采集把连续时间信号采集成离散信号,在这个过程中,精度就会损失,损失的精度大小.
2020-11-30 13:19:52 1247
转载 一、惯性器件综述
1. 前言在自动驾驶或机器人领域,我们目前接触最多的惯性器件就是MEMS了,偶尔会接触到采集车里的光纤惯导。这是我们处在这个行业所看到的情况,但其实它只是惯性领域的局部,把局部放在全局里去看,会对它有更深的理解。为了做到这一点,我们需要在横向上了解还有哪些其它的惯性器件,在纵向上了解每种器件的发展历史。2. 发展历史惯性技术的发展史,本质上就是惯性器件的发展史。惯导系统的每一次突破,都是从惯性器件的突破开始的。惯性器件包括陀螺仪和加速度计,其中陀螺仪的发展占主要地位,惯性技术发展的时
2020-11-30 12:00:59 4138
原创 MATLAB PVQ、bias、Diff 程序
-----------------------------------------------------------------------------------------%geoshow[fname, pname] = uigetfile('*.*', '请导入结果文件!');PVA=load(strcat(pname, fname));figure,geoshow(PVA(:,2),PVA(:,3));minTime=min(PVA(1,1),PVA(length(PVA(:,1)
2020-11-30 10:14:07 921
原创 MATLAB 三维图绘制程序
一、用法1、三维曲线绘制函数为 plot3(x,y,z):表示绘制一条三维曲线,其中x,y,z为三个相同维数的向量,函数绘出这些向量的所表示点的曲线2、plot3(x1,y1,z1,c1,x2,y2,z2,c2):表示按照坐标对向量绘制多条曲线,其中x1,y1,z1表示三维向量,c1,c2..表示线性或者颜色二、程序例1t=0:pi/30:10*pi;x=2*cos(t);y=2*sin(t);z=3*t;plot3(x,y,z);xlabel('x');..
2020-11-29 10:35:26 1299
原创 四元数、欧拉角、旋转矩阵之间互相转换
一、理论四元数欧拉角欧拉角有两种:静态:即绕世界坐标系三个轴的旋转,由于物体旋转过程中坐标轴保持静止,所以称为静态动态:即绕物体坐标系三个轴的旋转,由于物体旋转过程中坐标轴随着物体做相同的转动,所以称为动态使用动态欧拉角会出现万向锁现象;静态欧拉角不存在万向锁的问题。一个典型的万向锁问题可以表述如下:先仰45°再俯90°,这与先俯90°再仰45°是等价的。事实上,一旦选择±90°作为俯角,就会导致第一次旋转和第三次旋转等价,整个旋转表示系统被限制在只能绕竖直轴旋转,.
2020-11-28 11:21:47 1846 2
原创 相机内参估计 MATLAB方法 (一)
不同的深度摄像头具有不同的特征参数(标定相机),在计算机视觉里面,将这组参数成为 相机的内参矩阵C;相机内参是 相机坐标系 到 像素坐标系的投影矩阵,具体的解释可参考博客:https://blog.csdn.net/hltt3838/article/details/109356748格式为:一、人工估计假设:已知摄像头的 焦距为4mm = f, 像片的尺寸大小为640x480,传感器尺寸为 5856 μm x 3276 μm,像素大小为3μm x 3μm由上面已...
2020-11-27 19:49:45 1587
原创 状态分布函数 详细介绍
预备知识1》求解数学期望2》数学期望的性质一、正态分布正态分布(Normal distribution)又名高斯分布(Gaussiandistribution),若随机变量X服从一个数学期望为μ、方差为σ^2的高斯分布,记为N(μ,σ^2);其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。我们通常所说的 标准正态分布是 μ = 0,σ = 1的正态分布; 详细解释如下:均值方差二、卡方分布若n个 相互独立 ...
2020-11-27 11:31:57 3977
原创 MATLAB 读取和显示 bin 文件数据
%%%%%%%%.bin文件得读取方式%%%%%%%%%%%将读取的数据放置在M行N列中,N表示将读取的数据放置在1列中fip=fopen('imu.bin','rb');[result_imu,num]=fread(fip,[7 301445],'double');%inf表示读取文件中的所有数据,[M,N]表fclose(fip) %%%%%%%%.bin文件得读取方式%%%%%%%%%% datanumber = 301445;imu_data = zeros(7.
2020-11-26 12:43:59 17564 1
原创 MATLAB 读取,bin ,txt 文件,并保存成特定的格式
clearclcclose allData = importdata("rtk.txt"); % 读取名字为 rtk.txt 的文件 datanumber = 3036;gps_data = zeros(datanumber,7); for i = 1:1:datanumber gps_data(i,1:7) = Data(i,1:7) ; %读取到3036x7的矩阵中 end dlmwrite('result_gps.txt',gps_data,' '); ..
2020-11-26 11:51:30 3626
原创 GPS/INS/视觉 融合 、 自己采集数据测试
打开第一个终端roscore打开第二个终端进入工作区间内,分别输入:cd GPS_Stereo_Ins/catkin_wscatkin_make //单独一个端口,编译后关闭,没有修改程序不用编译,可以用于检查程序问题source devel/setup.bash roslaunch vins vins_rviz.launch打开第三个终端进入工作区间内,分别输入:cd GPS_Stereo_Ins/catkin_ws...
2020-11-25 22:13:37 2018 5
原创 Ubuntu 环境 中 python读取和保存 .txt 、.csv、.json文件数据并绘制图形
一、数据格式二、程序 read_imu.py # coding=UTF-8import cv2import numpy as npfrom matplotlib import pyplot as pltimport pylab#从.txt中读取数据 的函数def loadData(fileName): inFile = open(fileName, 'r')#以只读方式打开某filename文件 #定义2个空的list,用来存放文件中的数据 t .
2020-11-22 10:35:17 4305 1
原创 printf格式化输出
一、转换说明符 %a(%A) 浮点数、十六进制数字和p-(P-)记数法(C99) %c 字符%d 有符号十进制整数 %f 浮点数(包括float和double)%e(%E) 浮点数指数输出[e-(E-)记数法] %g(%G)浮点数不显无意义的零"0" %i 有符号十进制整数(与%d相同...
2020-11-20 21:01:38 185
原创 C++ 中 时间文件的读取
一、文件格式timestamps.txt 如下:二、程序int main(int argc, char** argv){ ros::init(argc, argv, "vins_estimator"); ros::NodeHandle n("~"); ros::console::set_logger_level(ROSCONSOLE_DEFAULT_NAME, ros::console::levels::Info); if(argc != 3) { printf(.
2020-11-18 22:06:11 857
原创 视觉SLAM 评测工具 evo
一、安装evo工具,git clone https://github.com/MichaelGrupp/evo.git然后进入evo文件夹pip install --editable . --upgrade --no-binary evo二、绘制或者导出一个或多个轨迹cd evo-master/test/dataevo_traj kitti KITTI_00_ORB.txt KITTI_00_SPTAM.txt --ref=KITTI_00_gt.txt -p --plo...
2020-11-18 15:56:30 802 3
原创 VINS - Fusion GPS/INS/视觉 融合 0、 Kitti数据测试
打开第一个终端roscore打开第二个终端进入工作区间内,分别输入:cd GPS_Stereo_Ins/catkin_wscatkin_makesource devel/setup.bash roslaunch vins vins_rviz.launch打开第三个终端进入工作区间内,分别输入:cd GPS_Stereo_Ins/catkin_wssource devel/setup.bash rosrun ...
2020-11-17 11:38:58 5227 50
原创 VINS - Fusion GPS/VIO 融合 二、数据融合
一、简介源代码:VINS - Fusion数据集:KITTI 数据程序入口:globalOptNode.cpp二、程序解读2.1 主函数int main(int argc, char **argv){ //初始化 ros::init(argc, argv, "globalEstimator"); ros::NodeHandle n("~"); //全局优化 global_path = &globalEstimator.glob.
2020-11-16 20:55:42 2953 7
原创 VINS - Fusion GPS/VIO 融合 一、数据读取
一、相关概念源代码:VINS - Fusion数据集:KITTI 数据程序入口:KITTIGPSTest.cpp 中二、程序解读2.1 参数读取#include <iostream>#include <stdio.h>#include <cmath>#include <string>#include <opencv2/opencv.hpp>#include <opencv2/highgui/hi..
2020-11-16 16:10:19 1920 1
转载 Ceres详解(三)最小二乘问题构建与求解
在前两讲中,我们研究了Ceres中代表最小二乘问题的 Problem类以及代表误差函数的类 CostFunction,本讲我们以Bundle Adjustment为例,研究如何利用这两个类构建最小二乘问题,并使用 ceres::Solve()函数求解。例子中使用的数据集为Bundle Adjustment in the Large数据集,完整的示例代码参见github。构建最小二乘问题首先我们需要构建一个BALProblem对象用于数据集的读取和存储,该类的源代码位于bal_probl.
2020-11-14 19:34:31 3640
转载 Ceres详解(二) CostFunction
代价函数CostFunction与其他非线性优化工具包一样,ceres的性能很大程度上依赖于导数计算的精度和效率。这部分工作在ceres中称为 CostFunction,ceres提供了许多种 CostFunction模板,较为常用的包括以下三种:1、自动导数(AutoDiffCostFunction):由ceres自行决定导数的计算方式,最常用的求导方式。2、数值导数(NumericDiffCostFunction):由用户手动编写导数的数值求解形式,通常在残差函数的计算使用无法直接调用的
2020-11-14 19:27:29 6606 4
转载 Ceres 详解(一) Problem类
引言Ceres 是由Google开发的开源C++通用非线性优化库(项目主页),与g2o并列为目前视觉SLAM中应用最广泛的优化算法库(VINS-Mono中的大部分优化工作均基于Ceres完成)。Ceres中的有限边界最小二乘问题建模为以下形式:Ceres的求解过程包括构: 建最小二乘和求解最小二乘问题 两部分,其中构建最小二乘问题的相关方法均包含在Ceres::Problem类中,涉及的成员函数主要包括 Problem::AddResidualBlock()和 Problem::AddP
2020-11-14 18:59:11 4557
原创 VINS-Mono 代码解析六、边缘化(3)
一、理论部分理论部分就不详细说了,看这个连接: https://blog.csdn.net/hltt3838/article/details/109455065简单介绍1、优化变量:para_Pose (6维,相机位姿)、para_SpeedBias(9维,相机速度、加速度偏置、角速度偏置)、para_Ex_Pose (6维、相机IMU外参)、para_Feature (1维,特征点深度)、para_Td (1...
2020-11-12 20:06:10 5464 4
原创 VINS 细节系列 - 光束法平差法(BA)Ceres 求解
一、理论部分学习过VINS的小伙伴应该知道,在SFM(structure from motion)的计算中 光束法平差法 - BA(Bundle Adjustment)的重要性!本人也是学习过一段时间后对其有了更加深刻的理解,那咱们就 先理论 后程序!1、 光束平差法 光束: 源于 bundle of light, 指的是三维空间中的点投影到像平面上的光束,而重投影误差正是利用这些光束来构建的,因此强调光束也正是描述其优化模型的来源!平差:感觉像测绘里面的内容!由于测量仪器的..
2020-11-12 16:05:45 8477 10
原创 i ++ 和 ++ i 的区别
一、记忆法前++ 是先自加再使用;后++ 是先使用再自加!二、实例2.1 后++a = j++;等效为:a = j;j = j + 1;2.2 前++a = ++j;等校为j = j + 1;a = j;
2020-11-10 18:14:12 82
原创 C++中 #ifdef 和 #endif
一、说明程序中,我们有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”; 有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。条件编译命令最常见的形式为:#ifdef 标识符程序段1#else程序段2#endif作用:当标识符已经被定义过(一般是用 #define 命令定义),则对程序段1进行编译,否则编译程序段2。其中#else部分也可以没有,即:#ifdef 标识符程序段1#d...
2020-11-10 17:01:21 317
转载 VINS 细节系列 - 窗口优化
https://blog.csdn.net/heyijia0327/article/details/53707261
2020-11-09 15:03:07 960 4
原创 VINS 细节系列 - Pnp (3D-2D)
一、概念PnP (Perspective-n-Point) 问题是在 已知特征点的世界坐标 及其在 某一相机位姿下的归一化坐标,求解 相机坐标与世界坐标 之间的 旋转矩阵和平移向量;PnP 问题有很多种求解方法,例如用三对点估计位姿的 P3P 、直接线性变换(DLT)、EPnP。此外,还能用非线性优化的方式,构建最小二乘问题并迭代求解,也就是万金油式的 Bundle Adjustment,具体理论可以看下面连接: https://blog.csdn.net/hltt3838/art.
2020-11-08 18:16:47 1295 2
转载 VINS 细节系列 - 预积分
一、IMU的模型以t时刻,IMU作为参考系,我们能够得到以下的IMU模型:左边是IMU的测量值,包括了3轴的加速度,以及3轴的角速度信息;右边第一项是陀螺仪和加速度计的真值,第二项是偏移偏移,最后一项是测量噪声项。注意一点的是,由于IMU测量的时候,是除了重力加速度外,所有外力对IMU参考系力的和对系统产生的加速度,会把反向重力加速度测量在内。意思是,当IMU自由落体的时候,加速度的读数是0;IMU平放在桌子上的时候,读数是g。这里假设噪声 na,nb 是服从高斯正态分布,而 ba,
2020-11-06 12:12:22 1896 1
转载 VINS 细节系列 - 坐标转换关系
前言在学习VINS-Mono过程中,对初始化代码中的坐标转换关系做出了一些推导,特意写了博客记录一下,主要记录大体的变量转换关系。相机和IMU的外参若需要VINS标定旋转外参,则进入以下代码: if (initial_ex_rotation.CalibrationExRotation(corres, pre_integrations[frame_count]->delta_q, calib_ric)) { ROS_WARN("initial extrin
2020-11-05 21:32:57 1712 1
原创 VINS 细节系列 - 初始姿态 g2R() 问题
目录一、相关概念二、初始化重力对齐理论部分程序部分双目加IMU的初始化理论部分程序部分一、相关概念假设有IMU坐标系和相机坐标系如下:IMU 和 相机有规定其本身的x,y,z轴的方向1、imu 一般规定右前下分别为x,y,z轴2、相机一般认为,z轴平行于镜头朝外,x轴与像平面的水平方向一致,从左到右,y轴与像平面垂直方向一致,从上到下假如: 相机坐标系作为参考坐标系,解算出了 imu坐标系 在 cam坐标系 下的位姿: R ,tt...
2020-11-05 17:59:07 2785 13
原创 VINS 细节系列 - IMU 相机 外参在线标定
一、概念所谓的外参是从 相机(Camera)坐标系 到 IMU坐标系 的相对旋 Rbc ,在该函数中用的ric表示的;其他过多的就不解释了,具体看我的博客:https://blog.csdn.net/hltt3838/article/details/109356748二、原理这里求解外参用的方法是最小二乘法,构建 AX = 0 的形式,然后使用奇异值分解(SVD)对 A 矩阵进行分解,最小奇异值对应的右向量就是 AX = 0 的非零解。下面就是构建最小二乘形式的过程:上.
2020-11-05 13:42:04 1474 3
原创 c++ queue的简单用法
一、定义queue<类型> 名称;例如:queue<int> q1; queue<double> q2; queue<float> q3二、基本操作 que.front() // 取队首元素 que.back() // 取队尾元素 que.push(x ) // 将元素x入队,从已有元素后面增加元素 que.pop() // 将队首元素出队 que....
2020-11-05 10:12:58 1426 1
Realsense_D435i.zip
2021-11-01
MATLAB局部放大功能 magnify.m
2020-12-21
NovAtelConnect2.3.2.zip
2020-12-05
迈普时空M39使用手册
2020-12-04
RTGnssInsNav Setup_1.9.0327.exe
2020-12-04
ProPak6 接收机操作说明
2020-12-04
INS_GPS_KF_RTS.zip
2019-09-27
(Java问题):用jd-gui软件反编译后,导入到eclipse里有错误
2016-08-18
(Java问题):用jd-gui软件反编译后,导入到eclipse里有错误
2016-08-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人