VINS-Fusion 外参标定效果分析(一)

2023-05-16

测试流程:

        在 EuRoC V1_01_easy 数据集上测试 VINS-Fusion 在线外参估计效果。使用估计前后不同的外参得到两条完整轨迹,使用 rpg_trajectory_evaluation 工具对比了两条轨迹相对 ground truth 的误差。

rpg_trajectory_evaluation 使用:

#依赖项
python -m pip install numpy matplotlib colorama

#安装
mkdir -p rpg_ws/src
cd rpg_ws/src
git clone https://github.com/uzh-rpg/rpg_trajectory_evaluation.git
git clone https://github.com/catkin/catkin_simple.git
cd ..
catkin_make

#使用
source devel/setup.bash
rosrun rpg_trajectory_evaluation asl_groundtruth_to_pose.py 轨迹保存路径/vio.csv
mv 轨迹保存路径/groundtruth.txt 轨迹保存路径/stamped_traj_estimate.txt
rosrun rpg_trajectory_evaluation analyze_trajectory_single.py 轨迹保存路径

另外,rpg_trajectory_evaluation 默认基于 sim3 对齐,对应纯单目视觉的情况,创建文件可以指定 align_type 和 align_num_frames。

        align_type:

                · sim3:相似变换(用于视觉单目情况)

                · se3:刚体变换(用于视觉双目情况)

                · posyaw:平移加上围绕重力的旋转(用于视觉惯性情况)

                · none:不对齐轨迹

        align_num_frames:

                将在轨迹对齐中使用的位姿数(从头开始)。-1 表示将使用所有位姿。

外参收敛过程:

        下图中 t 表示单位为 m 的平移外参,r 表示单位为 ° 的旋转向量形式的旋转外参。如下所示,外参的旋转部分和平移部分都基本收敛。

        外参的保存方法时在estimator.cpp文件里的optimization函数里,找到“ROS_DEBUG("Iterations : %d", static_cast<int>(summary.iterations.size()));”这行代码,并在这行代码下面添加如下代码:

std::ofstream outfile;
outfile.open(OUTPU_FOLDER+"extrinsic.txt", ios::app);
Eigen::Quaterniond temp_q(para_Ex_pose[0][6], para_Ex_pose[0][3], para_Ex_pose[0][4], para_Ex_pose[0][5]);
Eigen::AngleAxisd temp_rotation_vector(temp_q);
Eigen::Vector3d temp_rotation_v = 57.3 * temp_rotation_vector.angle() * temp_rotation_vector.axis();
outfile << std::to_string(curTime) << " " << para_Ex_pose[0][0] << " " << para_Ex_pose[0][1] << " " << para_Ex_pose[0][2] << " " << temp_rotation_v[0] << " " << temp_rotation_v[1] << " " << temp_rotation_v[2] << std::endl;
outfile.close();

        这样,左目相机与IMU之间的外参就保存在extrinsic.txt文件中,每行数据的顺序是Timestamp、tx、ty、tz、rx、ry、rz。最后使用python编写脚本,利用matplotlib即可画图。

外参估计前后的轨迹误差:

Rotation Error:

使用官方外参

使用估计得到的外参

Translation Error:

使用官方外参

使用估计得到的外参

Scale Error:

使用官方外参

使用估计得到的外参

侧面视角下的轨迹:

使用官方外参

使用估计得到的外参

总结:

现象:

        VIN-Fusion 在线估计得到的外参与官方外参有较大的差别,且使用估计得到的外参可以使轨迹整体精度明显提高。

原因:

        官方外参是在相机内参为 pinhole 模型下标定出来的,与 VIN-Fusion 自己标定出来的 mei 模型的相机内参不匹配,因此重新估计外参可以使精度有明显提升。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VINS-Fusion 外参标定效果分析(一) 的相关文章

  • STM32+LWIP服务器实现多客户端连接

    用过正点原子LWIP服务器例程开发的朋友可能知道 xff0c 例程的设计是只支持一个客户端连接的 xff0c 但实际应用中往往需要用到多客户端连接 下面是在正点原子扩展例程 网络实验14 NETCONN TCP 服务器 UCOSIII版本
  • px4 offboard例程

    cd src Firmware make px4 sitl default gazebo roslaunch mavros px4 launch fcu url 61 34 udp 14540 64 127 0 0 1 14557 34 r
  • 关于python使用playsound播放音频报错的原因分析

    程序代码 span class token keyword from span playsound span class token keyword import span playsound playsound span class to
  • 基于距离传感器的I2C通信(一)

    基于距离传感器的I2C通信 xff08 一 xff09 一 软硬件准备 xff08 一 xff09 硬件 xff08 二 xff09 软件ST Link驱动的下载安装 二 keil软件的配置 xff08 一 xff09 初始配置 xff08
  • Spring Boot||项目创建及报错解决

    背景 最近要实现一个网站 xff0c 计划后端基于spring boot来实现 所以在完成前端页面和相关数据库设计和实现后 xff0c 便安装了sts spring tool suite 由于是新手 xff0c 在用sts进行spring
  • PCB和原理图怎么通过CAD按照客户要求输出PDF文档资料(进阶版)

    通常电子工程师会把PCB和原理图做出一个PDF的资料用来生产或者认证 xff0c 这个可以通过AD自带的功能实现 xff0c 但是这个方法做出的PDF比较单一 xff0c 一般一页PDF只可以输出一个面之类 xff0c 也不可以加上表头之类
  • 阿里云Ubuntu服务器图形界面配置(详细步骤,萌新看过来)

    刚买完阿里云Ubuntu服务器后 xff0c 发现并没有图形界面 xff0c 就想办法在网上搜集了一些资料配置 xff0c 结果发现一些资料配置过程并不适用于萌新 所以写这篇博客 xff0c 一为记录 xff0c 二为让萌新更快更方便的配置
  • 从零开始的c语言学习生活

    大家好 xff0c 我是一名c语言萌新 xff0c 今天开始我要csdn上记录我的学习 1 基本数据类型 xff1a 整数 浮点数 缺省 bool 2 构造数据类型 xff1a 结构体 共用体 枚举 数组 xff08 1 xff09 整数类
  • 将无符号的10进制的数转换为16进制,并打印输出

    将一个数转换成相应的进制 xff0c 一般是除这个数并取它的余数 若转换成16进制 xff0c 则除16取余 第一种方法是直接取余将得到的值存入数组中 相应代码如下 xff1a include lt stdio h gt include l
  • ROS指令集1(设置ROS_PACKAGE_PATH)

    ROS指令集 添加环境变量 局部环境变量 xff0c 添加后立即生效 xff0c 终端关闭后实效 span class token builtin class name echo span span class token environm
  • 字符串查找函数strstr

    函数结构 xff1a char strstr const char str1 const char str2 功能 xff1a 在字符串str1中查找是否存在str2字符串 返回值 xff1a 该函数返回str2在str1中首次出现的地址
  • 内存操作函数(memcpy,memmove,memset)

    前言 xff1a C 语言中对字符和字符串的处理很是频繁 xff0c 但是 C 语言本身是没有字符串类型的 xff0c 字符串通常放在 常量字符串 中或者字符数组 中 字符串常量 适用于那些对它不做修改的字符串函数 memcpy 函数 me
  • matlab关于GPU警告报错

    电脑配置 xff1a RTX3050 xff0c i5十二代 xff0c CUDA11 6 matlab2020a 报错信息 运行神经网络训练时 xff0c 显示警告信息 xff1a Warning The CUDA driver must
  • 错误使用 network/subsasgn>network_subsasgn net.b{2} must be a 2-by-1 matrix.解决方法

    使用生物算法优化bp时出现以下报错 1 错误使用 network subsasgn gt network subsasgn net b 2 must be a 2 by 1 matrix 2 出错 索引 第 14 行 net 61 netw
  • 网络基础(网络发展背景(IP地址,端口,协议,字节序))

    了解网络发展背景 对局域网 广域网的概念有基本认识 了解网络协议的意义 重点理解 TCP IP 五层结构模型 学习网络传输的基本流程 理解封装和分用 在 IP 数据包头部中 有两个 IP 地址 分别叫做源 IP 地址 和目的 IP 地址 端
  • 网络编程套接字

    能够实现一个简单的 udp 客户端 服务器 实现一个简单的 tcp 客户端 服务器 单连接版本 多进程版本 多线程版本 套接字编程 主要讲解的就是如何编写一个网络通信程序 1 网络通信的数据中都会包含一个完整的五元组 sipsportdip
  • 网络基础2

    网络基础2 应用层 amp 传输层典型协议 应用层 自定制协议 私有协议 xff0c HTTP协议 传输层 UDP amp TCP协议 应用层 负责应用程序之间的数据沟通 应用层协议其实是面向程序员的协议 xff0c 因为应用程序是程序员写
  • ubuntu服务器通过iso进行系统升级

    ubuntu服务器通过iso进行系统升级 1 添加iso文件源 xff1a sudo mount t iso9660 o loop ubuntu 18 04 6 live server amd64 iso media cdrom 挂在镜像文
  • ROS学习(1):gazebo保存加载世界

    roslaunch文件分析 xff08 古月居大神提供 xff0c 来源于ROS机器人开发实践视频 xff09 96 view mbot gazebo play ground launch lt launch gt lt 设置launch文
  • connect to host port 22: Connection refused

    Windows 使用SSH连接树莓派 xff1a 提示 xff1a 这里简述项目相关背景 xff1a 今天练习发现使用MobaXterm可以正常连接到树莓派 xff0c 但是使用windows终端就不可以连接 xff0c 显示connect

随机推荐

  • 8本游戏开发书籍推荐

    很多刚刚接触游戏开发的朋友经常问我 xff1a 如何开始学习游戏开发 xff1f 我从事游戏开发行业很多年了 xff0c 坦率地讲 xff0c 开发游戏充满挑战性 xff0c 需要开发人员具备大量的技能与积极的创新精神 希望这篇小文能帮助朋
  • windows通过SSH控制树莓派

    windows通过SSH控制树莓派 xff1a 因学习需要在windows系统下对树莓派进行SSH连接 xff0c 包括SSH密钥生成 密钥传输及公钥保存等 Windows下密钥的产生 在Windows下使用 ssh keygen生成公钥和
  • raspistill command not found

    raspistill command not found xff1a 提示 xff1a 这里简述项目相关背景 xff1a 今天使用树莓派来调用摄像头 xff0c 摄像头为树莓派官方摄像头 xff0c 在升级系统和配置后发现使用raspist
  • 树莓派I2C基本用法

    文章目录 一 I2C二 I2C配置1 I2C02 I2C13 I2C34 I2C45 I2C56 I2C6 三 I2C工具总结 一 I2C 树莓派默认打开I2C功能 xff0c 如果I2C没有打开 xff0c 可以使用命令sudo rasp
  • 树莓派RTC

    文章目录 一 RTC准备二 RTC芯片三 为什么使用hwclock显示找不到硬件总结 一 RTC准备 在使能树莓派RTC之前 xff0c 需要先为树莓派RTC模块安装电池 xff08 一般为纽扣电池 xff09 二 RTC芯片 树莓派4B使
  • 树莓派debian11更换国内源

    更换国内源 修改文件 etc apt sources list deb https mirrors tuna tsinghua edu cn debian bullseye main contrib non free span class
  • cpptools占用率过高

    问题描述 使用vscode发现在系统中cpptools CPU占用率达到百分百 电脑发生严重卡顿 解决方案 xff1a 此问题的出现是因为使用了C C 43 43 这个插件 xff0c 如果直接禁用此插件就可以解决这个问题 如果希望使用这个
  • ROS话题的定义和使用

    ROS话题的定义和使用 自定义话题消息 自定义话题消息主要包括以下步骤 xff1a 定义msg文件在package xml中添加功能中依赖在CMakeList txt中添加编译规则编译生成语言相关文件 编写 msg文件 进入要定义 msg文
  • 如何在VScode中利用git来下载GitHub上的源码

    一 Git安装与下载 官网下载地址 xff1a Git Downloads https git scm com downloads xff08 注意安装时选择的默认编辑器选择vscode xff0c 然后修改安装路径其他默认下一步就ok了
  • PhpStorm 2018 安装及破解方法

    https blog csdn net u012278016 article details 81772566
  • mitmproxy笔记

    mitmproxy证书在http mitm it下载 或者在 mitmproxy ubuntu安装mitmproxy xff0e 可以到官网下载二进制文件 xff0e pip安装出了问题 xff0e Firfox和Chrome有各自独立的证
  • [Extensive Reading]目标检测(object detection)系列(十六)YOLOv4:平衡速度与精度

    简介 YOLOv4是YOLO之父Joseph Redmon宣布退出计算机视觉的研究之后推出的YOLO系列算法 xff0c 其作者Alexey Bochkovskiy也参与了YOLO之前系列算法 xff0c YOLOV4 Optimal Sp
  • 【Python】Python函数名后的->(横线和大于号)代表什么?

    目录 参考例子优点 参考 本文主要参考以下链接 xff1a 在def定义函数的时候 64 和 gt 代表什么 python中 gt 是什么意思python 定义函数 def 后面的 xff1e xff0c xff1a 表示的含义 例子 如下
  • Keil软件中使用“Go To Definition Of ”时提示“source browser:‘xxxx‘undefined definition/reference”

    在编写DMA的初始化函数时 xff0c 为了节约时间 xff0c 直接用了之前的模板 xff0c 但是在用DMA DeInit 函数时 xff0c 当右键点击此语句使用 Go To Definition Of 时 xff0c 该功能失效 x
  • 期末单片机复习题及答案(答案不保证全部正确95分)

    作者主页 xff1a 凉开水白菜 作者简介 xff1a 共同学习 xff0c 互相监督 xff0c 热于分享 xff0c 多加讨论 xff0c 一起进步 点赞 x1f44d 收藏 再看 xff0c 养成习惯 订阅的粉丝可通过PC端文末加我微
  • 带时间窗的车辆路径问题的多目标模因算法

    求解带时间窗车辆路径问题的多目标模因算法 1 问题描述和数学建模建立多目标模因算法 解的构造自适应局部搜索链 xff08 1 xff09 多方向局部搜索策略 xff08 2 xff09 强化的局部搜索链技术 xff08 3 xff09 自适
  • [嵌入式]stm32内部温度传感器实验

    实验概述 文章目录 实验概述一 概述二 实验平台 xff08 1 xff09 硬件平台ALIENTEK MiniSTM32 开发板 xff08 2 xff09 软件平台 三 实验过程1 STM32 内部温度传感器简介2 硬件设计3 软件设计
  • 用ipad的第一次写博客

    试着用用 用平板第一次写博客 练练手 张大炮到此一游
  • kazam的安装和使用

    kazam xff1a 介绍 xff1a 一款Linux端的录屏j兼具截图软件 主要是录屏有声音 软件 xff1a kazam 安装内容 xff1a 步骤如下 1 命令行执行语句sudo apt get install kazam 2 如果
  • VINS-Fusion 外参标定效果分析(一)

    测试流程 xff1a 在 EuRoC V1 01 easy 数据集上测试 VINS Fusion 在线外参估计效果 使用估计前后不同的外参得到两条完整轨迹 xff0c 使用 rpg trajectory evaluation 工具对比了两条