文章目录

  • 1. 作业1
    • 1.1 方法1
  • 2. 作业2

系列笔记:
手写VIO学习总结(一)

1. 作业1

1.1 方法1

  • 1 利用vio_data_simulation-ros_version生成imu的静止时候的仿真数据:
    具体步骤:
1.建立work space
2.利用caktin_make编译vio_data_simulation-ros_version
3.rosrun  vio_data_simulation vio_data_simulation_node注意:1.需要修改vio_data_simulation-ros_version/src/gener_alldata.cpp中的bag路径
2.打开vio_data_simulation-ros_version/src/param.h可以设置参数
  • 2 利用高温良的开源代码完成,参考我以前的博文:无人驾驶算法学习(十一):IMU标定及Allan方差分析
  • 3 待续,具体分析

2. 作业2


readme中提示: 1. 编译vio_data_simulation-master 2. 执行bin/data_gen, 生成数据 3. 执行python_tools/draw_trajectory.py 画出轨迹 4. 换成中值积分, 再重做一遍上述1,2,3过程

  • 1 欧拉法
    编译vio_data_simulation-master, vio_data_simulation-master是一个Cmake工程,对其进行编译。
cd vio_data_simulation-master
mkdir build
cd build
camke ..
make
cd ../bin
./data_gen

此时,在vio_data_simulation-master/bin目录下会生成一些txt文件,我们需要的是imu_pose.txt和imu_int_pose.txt,然后用Python的matplotlib绘图。

说明:
imu_pose.txt是由给定的轨迹方程和欧拉角,生成IMU的pose,imu_int_pose.txt是由给定的轨迹得到速度v和加速度a,再根据欧拉法得到IMU的pose。

cd ../python_tool
python draw_trajctory.py

  • 2 中值法

    • 2.1 vio_data_simulation-master/src/imu.cpp中欧拉法
 /// imu 动力学模型 欧拉积分Eigen::Vector3d acc_w = Qwb * (imupose.imu_acc) + gw;  // aw = Rwb * ( acc_body - acc_bias ) + gwQwb = Qwb * dq;Vw = Vw + acc_w * dt;Pwb = Pwb + Vw * dt + 0.5 * dt * dt * acc_w;

  • 2.2 中值法


替换的代码:

        MotionData imupose = imudata[i];MotionData imupose_ = imudata[i-1];//delta_q = [1 , 1/2 * thetax , 1/2 * theta_y, 1/2 * theta_z]Eigen::Quaterniond dq;Eigen::Vector3d dtheta_half = 1.0/2.0* (imupose.imu_gyro +  imupose_.imu_gyro) * dt /2.0;// Eigen::Vector3d dtheta_half = (imupose.imu_gyro +  imudata[i-1].imu_gyro)/2 * dt /2.0;dq.w() = 1;dq.x() = dtheta_half.x();dq.y() = dtheta_half.y();dq.z() = dtheta_half.z();/// 中值积分Eigen::Vector3d acc_w =  (Qwb * (imupose_.imu_acc) + gw + Qwb*dq * (imupose.imu_acc) + gw )/2;  // aw = Rwb * ( acc_body - acc_bias ) + gwQwb = Qwb * dq;Vw = Vw + acc_w * dt;Pwb = Pwb + Vw * dt + 0.5 * dt * dt * acc_w;

  • 3 注意:
    对比发现中值法更精准!!!

手写VIO学习总结(二)相关推荐

  1. 手写VIO --学习笔记 - Part1

    目录 一.VIO文献阅读 二.四元数和李代数更新 三.其他导数 参考 一.VIO文献阅读 阅读VIO 相关综述文献,回答以下问题: 1.视觉与IMU进行融合之后有何优势? IMU:(Inertial ...

  2. 《视觉SLAM进阶:从零开始手写VIO》(二)

    <视觉SLAM进阶:从零开始手写VIO>第二讲 1 安装im_utils 这个工具之前就使用过了,还写了博客,没想到在这里用上了,博客地址:https://blog.csdn.net/le ...

  3. 手写VIO --学习笔记 - Part8

    目录 1.基础 2.提升 Estimating Time Offsets using Basis Functions An Example: Camera/IMU Calibration 1.Quan ...

  4. 深蓝学院《从零开始手写VIO》作业一

    深蓝学院<从零开始手写VIO>作业一 深蓝学院<从零开始手写VIO>作业一 1. VIO文献阅读 1.1 视觉与IMU进行融合之后有何优势? 1.2 有哪些常见的视觉+IMU融 ...

  5. js如何在当前页面加载springmvc返回的页面_手写SpringMVC学习

    前面我们学习了spring框架源码,做了一些自己手写的学习,最近,我们开始学习springMVC框架的学习 ,springMVC框架,相信大家不陌生了,所以这里不做过多的介绍了. SpringMVC以 ...

  6. 《视觉SLAM进阶:从零开始手写VIO》第二讲作业-IMU仿真、MU imu_utils标定

    <视觉SLAM进阶:从零开始手写VIO>第二讲作业-IMU仿真.MU imu_utils标定 作业题目: 1 仿真代码解析 仿真代码地址:https://github.com/HeYiji ...

  7. 深蓝学院《从零开始手写VIO》作业七

    深蓝学院<从零开始手写VIO>作业七 深蓝学院<从零开始手写VIO>作业七 深蓝学院<从零开始手写VIO>作业七 将第二讲中的仿真数据(视觉特征,imu数据)接入V ...

  8. 深蓝学院《从零开始手写VIO》作业六

    深蓝学院<从零开始手写VIO>作业五 深蓝学院<从零开始手写VIO>作业六 1. 证明题 2. 代码题 深蓝学院<从零开始手写VIO>作业六 1. 证明题 证明Dy ...

  9. 深蓝学院《从零开始手写VIO》作业五

    深蓝学院<从零开始手写VIO>作业五 1. 完成Bundle Adjustment求解器 2. 完成测试函数 3. 论文总结 1. 完成Bundle Adjustment求解器 完成单目 ...

最新文章

  1. android打开网址重启后也是这个网站,千万不要乱试!iPhone只要打开这个「网址」立即崩溃重启!...
  2. python 霍夫直线变换_OpenCV-Python 霍夫线变换 | 三十二
  3. java学习(114):Calendar类方法before
  4. 滤波效果_各种电源滤波电路分析
  5. 黑马公开课——运行原理与GC学习笔记
  6. aspen plus大小_[软件]Aspen Plus 这些常识,你都懂了吗?
  7. 系统学习机器学习之线性判别式(二)
  8. MapReducer随笔小记
  9. 程序员面试头条被拒,一年后逆袭拿到offer【巴分巴秒】
  10. opencore(OC引导)关于修改sle系统权限的问题
  11. JSP——在JSP中嵌入java代码
  12. 六一儿童节,悼念天堂的小朋友
  13. 男人30岁之前不必在乎的事
  14. 同是数据分析产品, 为什么200万App企业都选择友盟+
  15. 计算机网络——配置动态路由实验
  16. vim如何与外界复制粘贴
  17. 100 道 Linux 常见面试题,慢慢读~
  18. Vivado 下单端口RAM的配置使用
  19. 蓝桥杯 DFS经典题 —— 算式900、寒假作业(告别枚举法)
  20. 【项目分享】还有谁不服??这款随机表情包生成器征服你!!

热门文章

  1. 年产2000t搅拌型发酵酸奶车间工艺设计
  2. 《时光不再,你还在》凌莫寒白静熙第二章 这么开心的时刻,他只想和我庆祝...
  3. 解救小哈——广度优先搜索bfs
  4. JavaScript数组常用方法总结及使用详解
  5. 华为手机便签有扫描的功能么
  6. SD从零开始38-40
  7. 阿里云下载git镜像路径
  8. 【python 生成自己的二维码】推广二维码带log图片
  9. 服务器怎么安装php文档,云服务器php怎么安装
  10. STM32F4定时器介绍