深蓝学院VIO课程学习笔记 VIO概述

article/2025/9/17 1:39:08

VIO概述

1. VIO整体概述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述松耦合:各部分自己算自己的,最后单独把数据来算
紧耦合:同时考虑这两个问题(效果更好)
在这里插入图片描述IMU+GPS精度可以达到cm级,但是受环境影响比较大

融合方案
在这里插入图片描述采用卡尔曼滤波,当一边数据来源不准确时,整体受影响

在这里插入图片描述在这里插入图片描述

2. 预备数学知识

2.1 三维刚体运动

在这里插入图片描述在这里插入图片描述

2.2 四元数

在这里插入图片描述
在这里插入图片描述在这里插入图片描述对时间求导

在这里插入图片描述

2.3 李代数

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个课程就没有怎么用 S E ( 3 ) SE(3) SE(3), 直接用 S O ( 3 ) + t SO(3)+t SO(3)+t

3. 作业

在这里插入图片描述

test.cpp

#include <iostream>
#include <ctime>#include <Eigen/Core>
#include <Eigen/Dense>#include <sophus/so3.h>
#include <sophus/se3.h>using namespace std;int main()
{Eigen::Vector3d w(0.01,0.02,0.03);Eigen::Matrix3d R_I = Eigen::Matrix3d::Identity();Sophus::SO3 SO3_R_I(R_I);Eigen::Quaterniond q_I = Eigen::Quaterniond(R_I);// 输出更新之前的R和qcout << endl << "before update, R is: " << endl << SO3_R_I.matrix() << endl;cout << endl << "before update, q is: " << q_I.coeffs().transpose()<< endl;//updatecout << "update ..." << endl;Sophus::SO3 SO3_updated = SO3_R_I * Sophus::SO3::exp(w); //对R 进行右乘更新cout << endl << "updated, R is: " << endl << SO3_updated.matrix() << endl;Eigen::Quaterniond q_w(1.0,0.005,0.01,0.015);q_w.normalize();q_I = q_I * q_w;cout << endl << "updated, q is: " << q_I.coeffs().transpose()<< endl;cout << "updated, from q to R is: " <<endl << q_I.toRotationMatrix()<< endl;return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)project(test)
include_directories( "/usr/include/eigen3" )# 为使用 sophus ,需要使用 find_package 命令找到它
find_package( Sophus REQUIRED )
include_directories( ${Sophus_INCLUDE_DIRS} )add_executable( test test.cpp )
target_link_libraries( test ${Sophus_LIBRARIES} )

http://chatgpt.dhexx.cn/article/U5giYUro.shtml

相关文章

海思3559 sample解析:vio

前言 拿到开发板&#xff0c;编完了平台sample&#xff0c;自然按捺不住要去简单学习测试了。打开最直观相对也比较简单的vio例程做个到手分析和流程梳理吧 测试 一开始自然是最磕磕绊绊的&#xff0c;连上HDMI线&#xff0c;串口登录后运行&#xff0c;屏幕乌漆嘛黑&#xff…

从零手写VIO(7)

从零手写VIO(7) 文章目录 从零手写VIO(7)前言一、VINS-Course代码解析二、作业&#xff08;7&#xff09;1.simulation-test.cpp修改2.Sysytem.cpp修改3.config文件夹下euroc_config.yaml参数修改4.param.h修改4.1无噪声4.2小噪声4.3大噪声 总结 前言 一、VINS-Course代码解析…

运行msckf_vio

1、编译 cd ~/msckf catkin_make --pkg msckf_vio --cmake-args -DCMAKE_BUILD_TYPERelease2、运行&#xff08;运行euroc数据集&#xff09; 首先roscore开启ros节点 cd ~/msckf source ~/msckf/devel/setup.bash roslaunch msckf_vio msckf_vio_euroc.launchcd ~/msckf sou…

深蓝学院-手写VIO作业-第二章

文章目录 一、基础作业&#xff0c;必做环境配置说明a. ROS环境搭建b. Matlab安装 1、设置IMU 仿真代码中的不同的参数&#xff0c;生成Allen 方差标定曲线。a. 对于非ROS&#xff1a;生成运动imu数据b.对于ROS: 专门生成静止 imu 数据&#xff0c;用于 allan 方差标定 2、将IM…

【代码阅读】PL-VIO

〇、写在前面 PL-VIO采用的通信是ROS&#xff0c;所以并不能像ORBSLAM那样按照执行顺序来理顺&#xff0c;因为ORBSLAM是有一个真正意义上的主函数的&#xff0c;经过CMakeList的编辑产生的可执行文件会有一个开始&#xff0c;但是PL-VIO用的是ROS&#xff0c;其内部通信是节点…

VIO:飞行机器人单目VIO算法测评

转&#xff1a;https://blog.csdn.net/u012348774/article/details/81414264 泡泡图灵智库&#xff0c;带你精读机器人顶级会议文章 标题&#xff1a;A Benchmark Comparison of Monocular Visual-Inertial Odometry Algorithms for Flying Robots 作者&#xff1a;Jeffrey De…

VIO学习笔记一

1. IMU&#xff08;Inertial Measurement Unit&#xff0c;惯性测量单元&#xff09; 典型6轴IMU以较高频率&#xff08;≥100Hz&#xff09;返回被测量物体的角速度与加速度。受自身温度、零偏、振动等因素干扰&#xff0c;积分得到的平移和旋转容易漂移。IMU本身由一个陀螺仪…

VIO仿真

使用turtelbot3仿真&#xff0c;发现gazebo的imu没有重力加速度。放弃。还是使用公开数据集。 使用这个仿真​​​​​​vio_data_simulation/src at ros_version HeYijia/vio_data_simulation GitHub 看一下如何用这个仿真跑起来vio。 -- 将特征点反投回图像&#xff0c;…

3.4.1 VIO虚拟以太网原理

最后更新2021/08/12 VIO Server在此完全实现了一个标准的以太网交换机的功能&#xff0c;现在业界都有了高大上的名称&#xff1a;SDN&#xff08;Software Defined Network&#xff09;&#xff0c;如果没有足够的网络知识&#xff08;幸好只是网络链路层&#xff09;&#x…

Vivado调用VIO核

文章目录 前言一、IP核的介绍二、VIO核1.作用2.调用方法 总结 前言 提示&#xff1a;本篇文章所使用的软件为Vivado2018.3&#xff1a; 以四选一数据选择器为例&#xff0c;使用verilog hdl语言以及Vivado自带的VIO,IP来实现功能 提示&#xff1a;以下是本篇文章正文内容&…

海思3519 VIO Sample例程讲解

海思VIO Sample例程讲解 海思SDK解压出来后&#xff0c;Sample包含各个功能模块的历程&#xff0c;本篇讲解VIO Sample历程。 进入VIO模块可以看到&#xff0c;VIO的main函数文件&#xff0c;先从main函数执行程序。 进入文件后首先看下VIO实现的功能&#xff0c;可以看到VIO…

PL-VIO论文阅读

PL-VIO: Tightly-Coupled Monocular Visual–Inertial Odometry Using Point and Line Features Yijia He 1,2,* , Ji Zhao 3, Yue Guo 1,2, Wenhao He 1 and Kui Yuan 1 2018 摘要 To address the problem of estimating camera trajectory and to build a structural 3D m…

DM-VIO简析

今天主要是针对DMVIO/DM-VIO的简析&#xff0c;中文网上有的东西都太少了&#xff0c;只能靠看完论文和组员们一起改代码。Lukas组这个东西在中文网被称为有史以来最好的VIO&#xff0c;但是实际过程中我们还是发现了许多不完美的地方。。。(比如ZUPT更新改造中该有的问题仍然在…

VIOSLAM 综述

文章目录 1.VIO 松耦合/紧耦合。2. 相机和IMU的缺点及互补性3. VIO融合算法流程及其模块分解:4. VIO 算法核心:5. 实验结果与总结:6. 参考文献: 1.VIO 松耦合/紧耦合。 Visual-Inertial Odometry&#xff08;VIO&#xff09;即视觉惯性里程计&#xff0c;有时也叫视觉惯性系统…

VIO系统介绍

VIO&#xff08;visual-inertial odometry&#xff09;即视觉惯性里程计&#xff0c;有时也叫视觉惯性系统&#xff08;VINS&#xff0c;visual-inertial system&#xff09;&#xff0c;是融合相机和IMU数据实现SLAM的算法&#xff0c;根据融合框架的区别又分为紧耦合和松耦合…

vivado VIO (virtual input output)虚拟IO的使用

转自&#xff1a;https://blog.csdn.net/wordwarwordwar/article/details/77150930 一般情况下ILA和VIO都是用在chipscope上使用&#xff0c;VIO可以作为在chipscope时模拟IO。 譬如&#xff1a; 在使用chipscope时需要使用按键出发&#xff0c;但是没有设计按键或者板子不再身…

【Vivado那些事儿】-VIO原理及应用

虚拟输入输出&#xff08;Virtual Input Output,VIO)核是一个可定制的IP核&#xff0c;它可用于实时监视和驱动内部FPGA的信号&#xff0c;如图所示。 可以定制VIO的输入和输出端口的数量与宽度&#xff0c;用于和FPGA设计进行连接。由于VIO核与被监视和驱动的设计同步&#xf…

python logger.exception_Python logging设置和logger解析

一、logging模块讲解 1.函数:logging.basicConfig() 参数讲解: (1)level代表高于或者等于这个值时,那么我们才会记录这条日志 (2)filename代表日志会写在这个文件之中,如果没有这个字段则会显示在控制台上 (3)format代表我们的日志显示的格式自定义,如果字段为空,那么默认…

Logger 基本用法

Logger 基本用法 简介 Simple, pretty and powerful logger for android 为Android提供的&#xff0c;简单、强大而且格式美观的工具 本质就是封装系统提供的Log类&#xff0c;加上一些分割线易于查找不同的Log&#xff1b;logcat中显示的信息可配置。最初的样子如下图 包含…

【Logback】<logger>、<root>标签详解

文章目录 背景一、\<logger>使用1.1、使用示例1.1、属性配置说明 & 演示1.1.1、name1.1.2、level1.1.3、additivity1.1.3.1、效果演示&#xff1a;additivitytrue1.1.3.1、效果演示&#xff1a;additivity"false" 1.2 appender-ref 二、\<root>使用2…