VINS-Mono运行记录(单目+IMU)

2023-05-16

VINS-Mono运行记录

  • 1.VINS-Mono在数据集下运行
    • 自己做的其它测试
  • 2.单目+IMU自己采集数据运行记录
    • 自己做的其它测试

1.VINS-Mono在数据集下运行

选取的数据集是EuRoC下的MH_05_difficult.bag
1.打开终端1,直接运行:

roslaunch vins_estimator vins_rviz.launch

2.打开终端2,直接运行:

roslaunch vins_estimator euroc.launch

3.打开终端3,直接运行:

rosbag play /home/xiaoqiang/Downloads/MH_05_difficult.bag

运行结果很完美,用evo评价工具与标准轨迹对比平均误差大概13cm。
运行结果
在这里插入图片描述
evo评价结果
在这里插入图片描述
在这里插入图片描述

自己做的其它测试

配置文件euroc_config.yaml中的的外参矩阵的平移量真值为(-0.0216401454975,-0.064676986768,0.00981073058949),
1.
estimate_extrinsic: 0 当外参旋转有粗略估计时,精度最高时效果一般
我将其改为(0.0,0.0,0.0),运行结果一般,用evo评价工具与标准轨迹对比误差0.4米左右。
我将其改为(0.1,0.1,0.1),运行结果一般,用evo评价工具与标准轨迹对比误差0.4米左右。
我将其改为(-0.1,-0.1,-0.1),运行结果一般,用evo评价工具与标准轨迹对比误差0.4米左右。。
我将其改为(0.5,0.5,0.5),运行结果很糟糕,用evo评价工具与标准轨迹对比误差2.1米左右。
我将其改为(1.0,1.0,1.0),运行结果很糟糕,用evo评价工具与标准轨迹对比误差4.6米左右。
我将其改为(10.0,10.0,10.0),运行结果很糟糕,几乎不能运行。
2.
estimate_extrinsic: 0 当外参旋转有精确估计时,精度最高时效果很好
我将其改为(0.0,0.0,0.0),运行结果依然很完美,用evo评价工具与标准轨迹对比误差13厘米左右。
我将其改为(0.1,0.1,0.1),运行结果一般,用evo评价工具与标准轨迹对比误差0.2米左右。
我将其改为(-0.1,-0.1,-0.1),运行结果一般,用evo评价工具与标准轨迹对比误差0.2米左右。。
我将其改为(0.5,0.5,0.5),运行结果很糟糕,用evo评价工具与标准轨迹对比误差1.2米左右。
我将其改为(1.0,1.0,1.0),运行结果很糟糕,用evo评价工具与标准轨迹对比误差4.3米左右。
我将其改为(10.0,10.0,10.0),运行结果很糟糕,几乎不能运行。
3.
estimate_extrinsic: 1 当外参旋转在一个粗略准确的范围内时(大概3°吧),与外参旋转关系不大,
我将其改为(0.0,0.0,0.0),运行结果依然很完美,用evo评价工具与标准轨迹对比误差13厘米左右。
我将其改为(0.1,0.1,0.1),运行结果依然很完美,用evo评价工具与标准轨迹对比误差13厘米左右。
我将其改为(-0.1,-0.1,-0.1),运行结果依然很完美,用evo评价工具与标准轨迹对比误差13厘米左右。
我将其改为(0.5,0.5,0.5),运行结果依然很完美,用evo评价工具与标准轨迹对比误差13厘米左右。
我将其改为(1.0,1.0,1.0),运行结果依然很完美,用evo评价工具与标准轨迹对比误差13厘米左右。
我将其改为(10.0,10.0,10.0),运行结果依然很完美,用evo评价工具与标准轨迹对比误差13厘米左右。
4.
estimate_extrinsic: 2 轨迹虽然不完整,但精度很高,可达到13cm。

1~4实验对比,当优化外参旋转和平移时,旋转只需有粗略估计值即可,平移几乎没影响,但尽量不要太大。 当不优化外参时,旋转必须要精度高,平移尽量精度高,平移也可设为零向量
5.
estimate_td: 0
td: 0.048 #数据集数据加上时间误差,却不加优化时间误差
运行结果一般,用evo评价工具与标准轨迹对比误差0.6米左右。
6.
estimate_td: 1
td: 0.048 #加上时间误差,也优化时间误差
运行结果稍好,用evo评价工具与标准轨迹对比误差0.2米左右。
5~6实验对比,实验数据尽量采集的时间误差要小,否则即使优化时间参数误差也达不到最优的结果。

2.单目+IMU自己采集数据运行记录

在做完上面实验的基础上,我自己在教研室采集了95秒的数据,制作成.bag文件SBG_Camera1.bag,配置文件要改为适合自己设备的参数,要改的东西至少要包括相机参数(自己标定)、IMU参数(自己标定)和外参旋转(用kailbr自己标定),外参平移直接设为零向量。我的配置文件yys_test.yaml文件如下

%YAML:1.0

#common parameters
imu_topic: "/SBG_data"
image_topic: "/camera_node/image_raw"
output_path: "/home/xiaoqiang/yys/output1/"

#camera calibration 
model_type: PINHOLE
camera_name: camera
image_width: 640
image_height: 480

distortion_parameters:
   k1: -0.3197406
   k2: 0.106782
   p1: 0.0003526
   p2: -0.0000828
projection_parameters:
   fx: 395.0287715
   fy: 394.5384675
   cx: 328.5603826
   cy: 221.0665875

# Extrinsic parameter between IMU and Camera.
estimate_extrinsic: 1   # 0  Have an accurate extrinsic parameters. We will trust the following imu^R_cam, imu^T_cam, don't change it.
                        # 1  Have an initial guess about extrinsic parameters. We will optimize around your initial guess.
                        # 2  Don't know anything about extrinsic parameters. You don't need to give R,T. We will try to calibrate it. Do some rotation movement at beginning.                        
#If you choose 0 or 1, you should write down the following matrix.
#Rotation from camera frame to imu frame, imu^R_cam
extrinsicRotation: !!opencv-matrix
   rows: 3
   cols: 3
   dt: d
   data: [0.0348837945, -0.0038827686,  0.9993838326,
          0.9993783167, -0.0049764543, -0.0349029363,
          0.0051089080,  0.9999800793,  0.0037067572 ]

#Translation from camera frame to imu frame, imu^T_cam
extrinsicTranslation: !!opencv-matrix
   rows: 3
   cols: 1
   dt: d
   data: [0, 0, 0]  # [ 0.0944595512, -0.0651064267, -0.0140113820 ]

#feature traker paprameters
max_cnt: 150            # max feature number in feature tracking
min_dist: 30            # min distance between two features 
freq: 10                # frequence (Hz) of publish tracking result. At least 10Hz for good estimation. If set 0, the frequence will be same as raw image 
F_threshold: 1.0        # ransac threshold (pixel)
show_track: 1           # publish tracking image as topic
equalize: 1             # if image is too dark or light, trun on equalize to find enough features
fisheye: 0              # if using fisheye, trun on it. A circle mask will be loaded to remove edge noisy points

#optimization parameters
max_solver_time: 0.04  # max solver itration time (ms), to guarantee real time
max_num_iterations: 8   # max solver itrations, to guarantee real time
keyframe_parallax: 10.0 # keyframe selection threshold (pixel)

#imu parameters       The more accurate parameters you provide, the better performance
acc_n: 6.0364730956851938e-03          # accelerometer measurement noise standard deviation. #0.2   0.04
gyr_n: 4.9477901032832672e-04         # gyroscope measurement noise standard deviation.     #0.05  0.004
acc_w: 1.7629458142188578e-04         # accelerometer bias random work noise standard deviation.  #0.02
gyr_w: 2.9964548323280108e-05       # gyroscope bias random work noise standard deviation.     #4.0e-5
g_norm: 9.79136     # gravity magnitude

#loop closure parameters
loop_closure: 1                    # start loop closure
load_previous_pose_graph: 0        # load and reuse previous pose graph; load from 'pose_graph_save_path'
fast_relocalization: 0             # useful in real-time and large project
pose_graph_save_path: "/home/xiaoqiang/yys/output1/pose_graph/" # save and load path

#unsynchronization parameters
estimate_td: 1                      # online estimate time offset between camera and imu
td: 0.0485                             # initial value of time offset. unit: s. readed image clock + td = real image clock (IMU clock)

#rolling shutter parameters
rolling_shutter: 0                  # 0: global shutter camera, 1: rolling shutter camera
rolling_shutter_tr: 0               # unit: s. rolling shutter read out time per frame (from data sheet). 

#visualization parameters
save_image: 1                   # save image in pose graph for visualization prupose; you can close this function by setting 0 
visualize_imu_forward: 0        # output imu forward propogation to achieve low latency and high frequence results
visualize_camera_size: 0.4      # size of camera marker in RVIZ

打开终端1,直接运行:

roslaunch vins_estimator vins_rviz.launch

打开终端2,直接运行:

roslaunch vins_estimator yys.launch

打开终端3,直接运行:

rosbag play /home/xiaoqiang/data/SBG_Camera1.bag

ps:一开始我不知道自己的相机IMU外参是多少,我自己用kailbr总是标定的误差太大,无语了!然后我就只好先将配置文件的estimate_extrinsic参数设为2,得到一个粗略的外参旋转和平移,平移弃之不用,直接置为零向量。

程序运行结果如下图所示,没有标准轨迹,不过看上去与我采集数据时基本一致。
在这里插入图片描述

自己做的其它测试

1 .
estimate_td: 1
td: 0.0
不加时间误差补偿,却优化时间误差,运行结果如下图所示
在这里插入图片描述

2 .
estimate_td: 0
td: 0.0485
加上时间误差补偿,却不加优化时间误差,运行结果如下图所示
在这里插入图片描述
3 .
estimate_td: 0
td: 0.0
不加时间误差补偿,也不加优化时间误差,运行结果如下图所示
在这里插入图片描述
对比原实验与1~3可以得出,只要加入时间偏差或加入时间偏差优化,程序都可正常运行,并且保证一定精度。 (estimate_extrinsic为1 )

4 .
estimate_extrinsic: 0 。当外参旋转有粗略估计时,程序几乎不能正常运行,
在这里插入图片描述

5 .
estimate_extrinsic: 0 。将外参的旋转估计值,直接置为以下矩阵参数,效果虽差,程序却可以正常运行,说明VINS标定的旋转参数,还不如我直接设置的更接近真值呢,无语!另外时间误差优不优化效果差不多。

   data: [0, 0, 1,
          1, 0, 0,
          0, 1, 0 ]

在这里插入图片描述

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

VINS-Mono运行记录(单目+IMU) 的相关文章

随机推荐

  • winScp 连接 FilEZillA报(由于目标计算机积极拒绝,无法连接)

    场景 xff1a 服务器一台 xff1b 本地台式机一台 xff0c 为了文件传输方便 xff0c 在服务器上使用FilEZillA搭建了FTP xff0c 在本地使用WinScp进行连接 问题 xff1a 首先FTP搭建没问题 xff0c
  • 关于 Raspberry Pi3 使用 Intel® RealSense™ D400 cameras的简单介绍

    Raspberry Pi Raspberry pi 可以称为个人微型电脑 xff0c 虽然它的性能无法与普通电脑相比 xff0c 但是它在很多方面都给我们带来了惊喜 xff0c 它的特点是便于携带 xff0c 功能基本和普通电脑一样 xff
  • 安装好后 实例启动出现问题

    错误如上正在排错中 File 34 usr lib python2 7 site packages nova conductor manager py 34 line 671 in build instances request spec
  • gazebo仿真之plugin系列一

    官网教程 xff1a http gazebosim org tutorials tut 61 plugins hello world amp cat 61 write plugin 本次内容涉及五个方面 xff1a plugin的基本介绍与
  • gazebo官网教程之快速开始

    英文教程 xff1a http gazebosim org tutorials tut 61 quick start amp cat 61 get started 一 运行gazebo 打开有默认环境的gazebo只需要三步 xff1a 1
  • 基于unity无人机3D仿真《一》

    基于unity无人机3D仿真 一 实现无人机的模型的制作 运动学关系 姿态角等 xff1b 实现无人机各种姿态运动 一 目前的效果 二 无人机模型 制作软件 xff1a maya 模型结构 xff1a 三 开发平台 unity2017 43
  • 比特、字节转换

    1bite xff08 比特 xff09 61 1字节 数字 xff1a 1字符 61 1字节 英文 xff1a 1字符 61 1字节 汉字 xff1a 1字符 61 2字节 在ASCII码中 xff0c 一个英文字母 xff08 不分大小
  • Unity无人机仿真github项目

    本人本科生有幸得到导师的指导 xff0c 对Unity这个平台学习已有一段时间 该平台在搭建自主仿真平台方面确实有很大优势 下面是在学习过程中收集到的一些多旋翼无人机仿真的github项目 xff0c 可供需要的快速学习 xff08 推荐先
  • matlab2020a中使用TrueTime工具

    环境 xff1a matlab版本 xff1a 2020a 参考文章 网络控制系统仿真 xff1a Truetime2 0工具箱安装 xff08 win10 43 matlab R2017b xff09 目标 xff1a 在matlab20
  • ros的init机制续篇

    这篇博客主要探讨init的实现过程 ros span class token double colon punctuation span span class token function init span span class toke
  • 基于Unity构建机器人的数字孪生平台系列1—介绍

    1 0 简介 本系列博客将开源近两年结合Unity和多旋翼无人机的相关工作 xff0c 涵盖仿真 建模 全局云端通信网络 本地局部通信网络 ROS 43 Unity VR等方面内容 该工作完整构建以虚控实 xff0c 沉浸式VR交互 xff
  • 基于Unity构建机器人的数字孪生平台系列2—四旋翼无人机三维模型

    系列2的主要内容是探讨如何自己构建一个模型并且导入Unity 1 简介 3D仿真与其他类型仿真的一大区别是三维场景和三维模型 为了实现对某个对象的仿真 xff0c 模型是必须的 当然 xff0c 针对不同的仿真任务 xff0c 需要描述对象
  • 模式识别实现之人脸识别(matlab)

    描述 用有监督学习机制设计并实现模式识别方法 xff0c 用于进行人脸面部特征识别 xff0c 如性别 xff08 男性 女性 xff09 年龄 xff08 儿童 青少年 成年 老年 xff09 佩戴眼镜 xff08 是 否 xff09 戴
  • 无人机自动驾驶GAAS学习一

    building GAAS environment 基本依赖项 pip install pandas jinja2 pyserial cerberus pyulog numpy toml pyquaternion Q1 程序 pip 尚未安
  • 无人机学习之launch文件的学习

    官网教程 xff1a http wiki ros org roslaunch XML xff08 1 xff09 ros系统launch文件出现的原因 xff1a 一个功能的实现包括比较多的节点的运行 xff0c 并且每个节点的启动是有顺序
  • 配置最基础的linux系统——Centos6.x版本

    自然是用到虚拟机了 xff0c Vmware是我常用的 xff0c 这里建立一个虚拟的裸机很简单 xff0c 有两点是要说明的 1 最大磁盘大小 xff0c 这个默认的是最小大小 xff0c 不能设的别它还小了 xff0c 否则启动不了Ce
  • matlab实现画散点图(一个x对应多个y)

    1 具体实现是 xff0c 首选导入数据 aray 61 importdata 位置 xff1b m n 61 size array 2 x轴间距设置 x 61 1 1 m 3 处理数组数据 figure 1 for i 61 1 1 n
  • VINS-Mono源码分析7— pose_graph2(四自由度位姿图优化)

    VINS Mono源码分析7 pose graph2 在上一篇博文中 xff0c 大概分析了一下VINS Mono回环检测和重定位的代码实现 xff0c 这里主要分析 四自由度的位姿图优化 关于这部分的原理可以参考VINS Mono论文第8
  • VINS-Mono中的DBoW2关键代码注释

    VINS Mono中的DBoW2关键代码注释 在阅读VINS Mono源码时对DBoW2中代码顺手做的注释 xff0c 怕以后会忘记 xff0c 在这里记录一下 xff0c 注释有不当之处 xff0c 望各位大神看到后多多指点 理论参考高翔
  • VINS-Mono运行记录(单目+IMU)

    VINS Mono运行记录 1 VINS Mono在数据集下运行自己做的其它测试 2 单目 43 IMU自己采集数据运行记录自己做的其它测试 1 VINS Mono在数据集下运行 选取的数据集是EuRoC下的MH 05 difficult