首先通过vins_estimator mode监听几个Topic(频率2000Hz),将imu数据,feature数据,raw_image数据(用于回环检测)通过各自的回调函数封装起来 ros::Subscriber sub_imu = n.subscribe(IMU_TOPIC, , imu_callback, ros::TransportHints().tcpNoDelay()); ros::Subscriber sub_image = n.subscribe(, feature_callb…
IMU预积分技术最早由T Lupton于12年提出[1],C Forster于15年[2][3][4]将其进一步拓展到李代数上,形成了一套优雅的理论体系.Forster将IMU预积分在开源因子图优化库GTSAM中进行了实现,并完成了和其另一大作SVO的组合.这套理论目前已经被广泛的应用在基于Bundle Adjustment优化框架的Visual Inertial Odometry中.其中包括VI-ORBSLAM,港科大VINS,浙大ICE-BA等. 本报告对Foster的paper[3][4]…
本文为IMU预积分总结与公式推导系列技术报告的第二篇. 承接第一篇的内容,本篇将推导IMU预积分的测量值,并分析其测量误差的分布形式. 传统捷联惯性导航的递推算法,以初始状态为基础,利用IMU测量得到的比力和角速度信息进行积分运算,实时更新载体的位姿及速度等状态,回顾上一篇给出的运动模型,如果已知k时刻的载体状态Rk.vk和pk,则利用IMU测量值可以直接递推得到k+1时刻的载体状态,根据这种思路,如果知道上一帧图像采样时刻载体的位姿和速度,则可以递推得到当前帧的位姿和速度.需要注意的是,传统的…
给 StereoDSO 加 IMU,想直接用 OKVIS 的代码,但是有点看不懂.知乎上郑帆写的文章<四元数矩阵与 so(3) 左右雅可比>提到 OKVIS 的预积分是使用四元数,而预积分论文中使用 so(3) 的右雅克比.才疏学浅,先整理好 so(3) 的预积分,写好 StereoDSO 加上 IMU,再考虑其他的东西. 以下的内容参考预积分的的论文,还有它的 Supplementary Material.预积分的论文中有一些 typo 所以看上去还是比较迷的,参考网络上多份预积分论文的 p…
IMU的数据频率一般远高于视觉,在视觉两帧k,k+1之间通常会有>10组IMU数据.IMU的数据通过积分,可以获取当前位姿(p位置,q四元数表达的姿态).瞬时速度等参数. 在VIO中,如果参考世界坐标系对IMU进行积分,积分项中包含相对于世界坐标系的瞬时旋转矩阵,这样有几个问题: 1. 相对世界坐标系的旋转矩阵有drift,如果一直以其为基准进行积分,必然造成积分误差累积: 2. 在进行优化位姿调整时(通常是调整视觉KeyFrame的pose),相对于世界坐标系的pose会变化,因而优化后的瞬时…
https://www.sohu.com/a/242760307_715754 http://www.sohu.com/a/243155537_715754 https://www.sohu.com/a/243601310_715754 http://m.sohu.com/a/244040730_715754 https://search.bilibili.com/all?keyword=vio%E9%A2%84%E7%A7%AF%E5%88%86…
摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过机器人大脑处理并输出反馈和执行动作.本章节涉及到的传感器有激光雷达.IMU.轮式里程计.麦克风.音响.摄像头,和用于处理信息的嵌入式主板.关于传感器的ROS驱动程序开发和在机器人上的使用在后面的章节会展开,本章节重点对机器人传感器和嵌入式主板进行讲解,主要内容: 1.ydlidar-x4激光雷达 2…
之前若是有人拿个结构体或者联合体问我这个结构占用了多少字节的内存,我一定觉得这个人有点low, 直到某某公司的一个实习招聘模拟题的出现,让我不得不重新审视这个问题, 该问题大致如下: typedef struct _A{ char a; int b; float c; double d; int *pa; char* pc; short e; }A; #pragma pack(pop) int main(int argc, char *argv[]) { printf("size = %d\n&…
对齐 数 据的对齐(alignment)是指数据的地址和由硬件条件决定的内存块大小之间的关系.一个变量的地址是它大小的倍数的时候,这就叫做自然对齐 (naturally aligned).例如,对于一个32bit的变量,如果它的地址是4的倍数,-- 就是说,如果地址的低两位是0,那么这就是自然对齐了.所以,如果一个类型的大小是2n个字节,那么它的地址中,至少低n位是0.对齐的规则是由硬件引起 的.一些体系的计算机在数据对齐这方面有着很严格的要求.在一些系统上,一个不对齐的数据的载入可能会引起进程…
视觉 Vs. IMU 小白:师兄,好久没见到你了啊,我最近在看IMU(Inertial Measurement Unit,惯性导航单元)相关的东西,正好有问题求助啊 师兄:又遇到啥问题啦? 小白:是这样的,现在VIO(Visual-Inertial Odometry,视觉惯性里程计)很火,我就想试试把IMU测量的信息和图像进行简单的融合,这样利用IMU测量的先验信息,可以给图像一个比较好的初值... 师兄:嗯嗯,这个思路没问题的啊,图像信息和 IMU 确实存在一定互补性,两者各有所长,取长补短.…