imu

【SLAM】VINS-MONO解析——vins_estimator流程

蹲街弑〆低调 提交于 2020-03-04 02:48:53
5.vins_estimator 基本上VINS里面绝大部分功能都在这个package下面,包括IMU数据的处理(前端),初始化(我觉得可能属于是前端),滑动窗口(后端),非线性优化(后端),关键帧的选取(部分内容)(前端)。我第一次看的时候,总是抱有一个疑问,就是为什么把这么多内容全都放在这一个node里面。为了回答这个问题,那么首先先搞清楚vins_estimator里面分别具体都是什么,为什么要有这些数据结构/函数,这些函数是怎样工作的。 这个package下面主要以下文件: factor——主要用于非线性优化对各个参数块和残差块的定义,VINS采用的是ceres,所以这部分需要对一些状态量和因子进行继承和重写。 initial——主要用于初始化,VINS采用的初始化策略是先SfM进行视觉初始化,再与IMU进行松耦合。 estimator.cpp——vins_estimator需要的所有函数都放在这里,是一个鸿篇巨制。 estimator_node.cpp——vins_estimator的入口,是一个ROS的node,实际上运行的是这个cpp文件。 feature_manager.cpp——负责管理滑窗内的所有特征点。 parameters.cpp——读取参数,是一个辅助函数。 utility——里面放着用于可视化的函数和tictok计时器。

IMU误差的来源

守給你的承諾、 提交于 2020-03-01 20:24:14
将IMU的误差源归类后主要有以下四类: (1)加速度计影响因素 在IMU中,加速度计对其的影响主要体现在加速度计的精度和稳定性两个方面。其中加速度计的高精度是为保障后续数据处理的精确性,加速度计的稳定性则是直接影响IMU能否发挥出正常性能的关键因素。 (2)陀螺仪影响因素 陀螺仪对IMU的影响主要体现在其精确性上,其精确性将直接影响姿态解算的优劣程度,换句话说,最后IMU能否正确感知产品的姿态就是依靠陀螺仪的精确性。 (3)温度影响因素 MEMS惯性器件在温度发生变化时,其精度会产生较大的差异,一般情况下,惯性器件的工作环境不可能是恒温环境,尤其是陀螺的精度受到严重影响,因此温度的影响不能忽略。 (4)IMU产品化后主要影响因素 A.信噪比低 B.漂移大/延迟大 来源: CSDN 作者: abcwoabcwo 链接: https://blog.csdn.net/abcwoabcwo/article/details/104575801

IROS2019多传感器融合SLAM方向

痴心易碎 提交于 2020-02-17 19:13:36
Stereo Visual Inertial LiDAR Simultaneous Localization and Mapping Abstract Simultaneous Localization and Mapping (SLAM) is a fundamental task to mobile and aerial robotics. LiDAR based systems have proven to be superior compared to vision based systems due to its accuracy and robustness. In spite of its superiority, pure LiDAR based systems fail in certain degenerate cases like traveling through a tunnel. We propose Stereo Visual Inertial LiDAR (VIL) SLAM that performs better on these degenerate cases and has comparable performance on all other cases. VIL-SLAM accomplishes this by

VINS-mono详细解读

本小妞迷上赌 提交于 2020-01-20 03:58:54
VINS-mono详细解读 极品巧克力 前言 Vins-mono是香港科技大学开源的一个VIO算法, https://github.com/HKUST-Aerial-Robotics/VINS-Mono ,是用紧耦合方法实现的,通过单目+IMU恢复出尺度,效果非常棒。 感谢他们开源,我从中学到了非常多的知识。源码总共有15000多行,我在通读完程序之后,结合参考文献,把程序背后的算法理论都推导了一遍,总结成了本文,与各位分享。 本文目标读者:对vins-mono有一定了解的SLAM算法工程师。由于程序里有非常多的实现细节,建议读者在读本文前,先读一遍vins-mono的程序。 1.特征点跟踪 首先用 cv::goodFeaturesToTrack 在第一帧图像上面找最强的150个特征点,非极大值抑制半径为30。新的特征点都有自己的新的对应的id。然后在下一帧过来时,对这些特征点用光流法进行跟踪,在下一帧上找匹配点。然后对前后帧中这些匹配点进行校正。先对特征点进行畸变校正,再投影到以原点为球心,半径为1的球面上,再延伸到深度归一化平面上,获得最终校正后的位置。对于每对匹配点,基于校正后的位置,用F矩阵加ransac来筛选。然后再在匹配上的特征点之外的区域,用 cv::goodFeaturesToTrack 搜索最强的新的特征点,把特征点数量补上150个。 最后,把剩下的这些特征点

香港科技大学的VINS_MONO初试

送分小仙女□ 提交于 2020-01-20 03:58:23
简介 VINS-Mono 是香港科技大学开源的一个VIO,我简单的测试了,发现效果不错。做个简单的笔记,详细的内容等我毕设搞完再弄。 代码主要分为前端(feature tracker),后端(sliding window, loop closure),还加了初始化(visual-imu aligment) Feature tracker 这部分代码在 feature_tracker 包下面,主要是接收图像topic,使用KLT光流算法跟踪特征点,同时保持每一帧图像有最少的(100-300)个特征点。 根据配置文件中的 freq ,确定每隔多久的时候,把检测到的特征点打包成 /feature_tracker/feature topic 发出去, 要是没有达到发送的时间,这幅图像的feature就作为下一时刻的 KLT追踪的特征点,就是不是每一副图像都要处理的,那样计算时间大了,而且数据感觉冗余,帧与帧之间图像的差距不会那么明显。 这里的 freq 配置文件建议至少设置10,为了保证好的前端。 void img_callback(const sensor_msgs::ImageConstPtr &img_msg) { for (int i = 0; i < NUM_OF_CAM; i++) { ROS_DEBUG("processing camera %d", i); if (i !=

IMU Noise Model

情到浓时终转凉″ 提交于 2019-12-26 00:26:02
1.参考资料 2.相关定义 3.IMU 的噪声模型 3.1噪声的建模 3.2白噪声和随机游走噪声的离散化 3.3如何获取传感器噪声参数 4.随机噪声和扰动的积分 4.1建立模型 4.2噪声的离散化模型推导 4.3系统的状态误差方程 4.4状态误差方程的积分 4.4.1 第一项-状态误差 4.4.2 第二项-测量白噪声 4.4.3 第三项-扰动噪声离散化(随机游走噪声) 4.5 离散的系统误差方程 4.6 误差状态方程的其他说明 4.7 Full IMU example 1.参考资料 <1>Kalibr IMU Noise Model: https://github.com/ethz-asl/kalibr/wiki/IMU-Noise-Model <2>高斯白噪声: http://blog.csdn.net/ZSZ_shsf/article/details/46914853 <3>随机游走: http://blog.sina.com.cn/s/blog_5c2cfefb0100emyi.html <4>泡泡机器人IMU状态模型(2) http://mp.weixin.qq.com/s/_ElpcSkMaGEIFd3bmwGa_Q <5>泡泡机器人IMU状态模型(1) http://mp.weixin.qq.com/s/PD4cOqVE3oMhyW4A2N02xQ <6>

Determine new GPS position using roll, pitch, yaw and length

夙愿已清 提交于 2019-12-25 03:43:35
问题 I'm using a Reach RS+ device to capture GPS position data as well as IMU data (roll, pitch and yaw); see the "Point Collection" image on the manufacturer's website. I'm trying to determine the GPS coordinates of the bottom point (the empty end of the rod that the receiver is fixed on). To be able to make calculations in meters I'm converting longitude ( X ) and latitude ( Y ) to UTM while keeping altitude ( Z ) unaltered. When the rod is upright, X and Y stay the same while Z1 = Z - ROD

What sensors does ARCore use?

时光毁灭记忆、已成空白 提交于 2019-12-21 02:35:45
问题 What sensors does ARCore use: single camera, dual-camera, IMU, etc. in a compatible phone? Also, is ARCore dynamic enough to still work if a sensor is not available by switching to a less accurate version of itself? 回答1: UPDATED November 24, 2019 . Google's ARCore , as well as Apple's ARKit , use the same types of sensors to track a real-world scene. ARCore uses a single RGB camera along with IMU device, what is a combination of an accelerometer , magnetometer and a gyroscope . Your phone can

飞控IMU姿态估计流程

♀尐吖头ヾ 提交于 2019-12-13 07:52:46
飞控中使用加速度计,陀螺仪,磁罗盘进行姿态估计算法流程。 step1: 获取陀螺仪,加速度计,磁罗盘的原始数值。 step2: 陀螺仪,加速度计减去固定的偏移后得到校准数值,磁罗盘通过偏移和缩放后得到校准数值。(都是在载体坐标系下的测量值)。 step3: 首先根据上次的飞控姿态四元数计算出载体坐标系在世界坐标系中的旋转矩阵。 公式:从四元数 q ( w , x , y , z ) q(w,x,y,z) q ( w , x , y , z ) 到旋转矩阵 [ 1 − 2 y 2 − 2 z 2 2 x y + 2 w z 2 x z − 2 w y 2 x y − 2 w z 1 − 2 x 2 − 2 z 2 2 y z + 2 w x 2 x z + 2 w y 2 y z − 2 w x 1 − 2 x 2 − 2 y 2 ] \begin{bmatrix} {1 - 2{y^2} - 2{z^2}} & {2xy + 2wz} & {2xz - 2wy} \\ {2xy - 2wz} & {1 - 2{x^2} - 2{z^2}} & {2yz + 2wx} \\ {2xz + 2wy} & {2yz - 2wx} & {1 - 2{x^2} - 2{y^2}} \\ \end{bmatrix} ⎣ ⎡ ​ 1 − 2 y 2 − 2 z 2 2 x y − 2 w z 2

PX4原生固件SPI驱动动编写与IMU传感器替换

匿名 (未验证) 提交于 2019-12-03 00:27:02
适用于PX4原生固件 核心目标:完成XSENS的MTI3,IMU替换。MTI3是一款航姿参考系统,可以独立的输出四元数,加速度,磁力计等,角速度等航姿信息。里面有完整的卡尔曼滤波,可以替换飞控本身里面的姿态估计部分。因为PX4里面所用的传感器器件都是消费级的元器件,所以MTI3这样的工业级的IMU替换还是非常有价值的。 一 PX4:SPI硬件介绍 PIXHAWK里面有3路SPI的硬件接口,分别是: IMU的一路(通过片选信号来支持磁力计,陀螺仪,加速度计这几个SPI传感器) 铁电存储器一路(存储飞控参数信息) 外置SPI接口一路,可以外接SPI传感器的 外置SPI接口线路图 二 PX4:SPI驱动介绍 pixhawk内部的很多传感器都是用SPI进行通信的,所有SPI接口传感器都是基于继承了device::SPI这个SPI基类来实现的SPI传感器驱动的编写。比如: Src/Drivers/Hmc5883 磁力计,Src/Drivers/Mpu9250 陀螺仪等等都是基于SPI总线。 里面的构造函数,init,read,write,ioctl几个虚函数,在本类里面重写即可。这里我们可以去看一下MPU9250,Hmc5883的SPI驱动的写法 尤其这几个函数的写法。比如MPU9250的: 比如5883的: 这个虚函数的重写内容都是不一样的,具体的写法规则要更具具体的硬件手册来