OpenVINS学习1——数据集配置与运行

前言

OpenVINS是基于MSCKF的开源VIO算法,有非常详细的官网文档可以学习使用,将来一段时间的主要实践工作,就是深度掌握这份开源代码。

https://docs.openvins.com/

一、环境配置与Euroc数据集运行

我的环境是Ubuntu20.04,ROS1,参看https://docs.openvins.com/gs-installing.html进行配置下载就行,Euroc数据集从OpenVINS支持数据集那里能够直接下载。

https://docs.openvins.com/gs-datasets.html#gs-data-euroc

关于Euroc的运行,我下载的最新版本OpenVINS好像没有pgeneva_ros_eth.launch ,网上很多博客可能没办法直接运行。不过参考这个博客就行。

https://blog.csdn.net/PG__13/article/details/123323802

在这里插入图片描述

关于运行配置,主要都在subscribe.launch里面,通过配置不同参数,进行运行选项的选择。

<launch>

    <!-- what config we are going to run (should match folder name) -->
    <arg name="verbosity"   default="INFO" /> <!-- ALL, DEBUG, INFO, WARNING, ERROR, SILENT -->
    <arg name="config"      default="euroc_mav" /> <!-- euroc_mav, tum_vi, rpng_aruco -->
    <arg name="config_path" default="$(find ov_msckf)/../config/$(arg config)/estimator_config.yaml" />

    <!-- mono or stereo and what ros bag to play -->
    <arg name="max_cameras" default="2" />
    <arg name="use_stereo"  default="true" />
    <arg name="bag_start"   default="0" /> <!-- v1-2: 0, mh1: 40, mh2: 35, mh3: 17.5, mh4-5: 15 -->
    <arg name="bag_rate"    default="1" />
    <arg name="dataset"     default="V1_01_easy" /> <!-- V1_01_easy, V1_02_medium, V2_02_medium -->
    <arg name="dobag"       default="false" /> <!-- if we should play back the bag -->
    <arg name="bag"         default="/media/patrick/RPNG\ FLASH\ 3/$(arg config)/$(arg dataset).bag" />
<!--    <arg name="bag"         default="/home/patrick/datasets/$(arg config)/$(arg dataset).bag" />-->
<!--    <arg name="bag"         default="/datasets/$(arg config)/$(arg dataset).bag" />-->

    <!-- saving trajectory path and timing information -->
    <arg name="dosave"      default="false" />
    <arg name="dotime"      default="false" />
    <arg name="path_est"    default="/tmp/traj_estimate.txt" />
    <arg name="path_time"   default="/tmp/traj_timing.txt" />

    <!-- if we should viz the groundtruth -->
    <arg name="dolivetraj"  default="false" />
    <arg name="path_gt"     default="$(find ov_data)/$(arg config)/$(arg dataset).txt" />

    <!-- MASTER NODE! -->
<!--    <node name="ov_msckf" pkg="ov_msckf" type="run_subscribe_msckf" output="screen" clear_params="true" required="true" launch-prefix="gdb -ex run &#45;&#45;args">-->
    <node name="ov_msckf" pkg="ov_msckf" type="run_subscribe_msckf" output="screen" clear_params="true" required="true">

        <!-- master configuration object -->
        <param name="verbosity"              type="string" value="$(arg verbosity)" />
        <param name="config_path"            type="string" value="$(arg config_path)" />

        <!-- world/filter parameters -->
        <param name="use_stereo"             type="bool"   value="$(arg use_stereo)" />
        <param name="max_cameras"            type="int"    value="$(arg max_cameras)" />

        <!-- timing statistics recording -->
        <param name="record_timing_information"   type="bool"   value="$(arg dotime)" />
        <param name="record_timing_filepath"      type="string" value="$(arg path_time)" />

    </node>

    <!-- play the dataset -->
    <group if="$(arg dobag)">
        <node pkg="rosbag" type="play" name="rosbag" args="-d 1 -r $(arg bag_rate) -s $(arg bag_start) $(arg bag)" required="true"/>
    </group>

    <!-- record the trajectory if enabled -->
    <group if="$(arg dosave)">
        <node name="recorder_estimate" pkg="ov_eval" type="pose_to_file" output="screen" required="true">
            <param name="topic"      type="str" value="/ov_msckf/poseimu" />
            <param name="topic_type" type="str" value="PoseWithCovarianceStamped" />
            <param name="output"     type="str" value="$(arg path_est)" />
        </node>
    </group>

    <!-- path viz of aligned gt -->
    <group if="$(arg dolivetraj)">
        <node name="live_align_trajectory" pkg="ov_eval" type="live_align_trajectory" output="log" clear_params="true">
            <param name="alignment_type" type="str" value="posyaw" />
            <param name="path_gt"        type="str" value="$(arg path_gt)" />
        </node>
    </group>


</launch>

二、TUM数据集运行测试

TUM数据集也可以从OpenVINS支持数据集那里下载,运行命令主要也是参照subscribe.launch进行配置,因为OpenVINS原生支持TUM数据集,所以比较容易跑通。运行命令如下:

//开启一个终端
roscore

//开启一个终端
rviz
//打开rviz后,再点击左上角,open config,添加workspace/catkin_ws_ov/src/open_vins/ov_msckf/launch/display.rviz配置文件

//开启一个终端
source devel/setup.bash
roslaunch ov_msckf subscribe.launch config:=tum_vi dataset:=dataset-room1_512_16

//在存放数据bag的文件夹内开启一个终端
rosbag play dataset-room1_512_16.bag

有个真值的问题没解决,运行Euroc的时候就发现了,RVIZ中没有显示真实轨迹,这里以TUM为例演示一下怎么显示真实轨迹,Euroc数据集是同理的。将dolivetraj参数配置为true就行,因为OpenVINS里自带了真实轨迹数据,会自动找到,但是如果使用其他数据集,则还需要改动真值路径等参数。

roslaunch ov_msckf subscribe.launch config:=tum_vi dataset:=dataset-room1_512_16 dolivetraj:=true

在这里插入图片描述
此外,ov_eval中还有很多评估工具,需要单独运行来使用,之后出一期专门学习一下这个。

3、VIRAL数据集配置运行

这是今天的重点部分,原生OpenVINS并不支持VIRAL数据集,但是VIRAL数据集作者曾经就在OpenVINS运行出过一个改动好的代码,但是现在OpenVINS中launch文件经过改动了,因此也需要重新配置一番。

VIRAL支持的OpenVINS:https://github.com/brytsknguyen/open_vins.git

主要需要修改的地方有:配置文件添加,真实轨迹文件添加,数据集添加测试。
直接去VIRAL支持的OpenVINS里把ntuviral.rviz、run_ntuviral.launch粘贴到自己的OpenVINS中的open_vins/ov_msckf/launch文件夹下就行了。VIRAL作者已经将配置参数都写到了run_ntuviral.launch里面。
在这里插入图片描述

运行命令

//打开一个终端
roscore

//打开一个终端
roslaunch ov_msckf run_ntuviral.launch bagfile:=/home/merlincs/workspace/dataset/VIRAL/eee_01
//后面是bag的路径

这一块还是有问题,明天再搞了。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/229510.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python与ArcGIS系列(十六)重复节点检测

目录 0 简述1 实例需求2 arcpy开发脚本0 简述 在处理gis线图层和面图层数据时,有时候会遇到这种情况:数据存在重复节点或伪重复节点(两个节点距离极小),往往我们需要对这种数据进行检测标注或进行修改。本篇将介绍如何利用arcpy及arcgis的工具箱实现这个功能。 1 实例需求…

Axure原型图表组件库,数据可视化元件(Axure9大屏组件)

针对Axure制作的大屏图表元件库&#xff0c;帮助产品经理更高效地制作高保真图表原型&#xff0c;是产品经理必备元件工具。现分享完整的组件库&#xff0c;大家一起学习。 本组件库的图表模块&#xff0c;已包含所有常用的图表&#xff0c;以下为部分组件截图示意。文末可下载…

微信头像上传失败?照片尺寸修改方法大揭秘

微信上传头像失败是大家经常遇到的问题之一&#xff0c;其中的原因有可能是因为网络问题&#xff0c;也有可能是因为图片本身的问题&#xff0c;比如图片尺寸不符合平台要求&#xff0c;这时候&#xff0c;我们只需要通过给照片尺寸修改一下就可以解决&#xff0c;那么怎么修改…

LinuxBasicsForHackers笔记 -- 文件系统和存储设备管理

设备目录/dev Linux 有一个特殊的目录&#xff0c;其中包含代表每个连接设备的文件&#xff1a;相应命名的 /dev 目录。 /dev中有很多设备列表。 特别令人感兴趣的是设备 sda1、sda2、sda3、sdb 和 sdb1&#xff0c;它们通常是硬盘驱动器及其分区以及 USB 闪存驱动器及其分区…

Go实现http同步文件操作 - 增删改查

http同步文件操作 - 增删改查 http同步文件操作 - 增删改查1. 前置要求1.1. 构建结构体 文件名 文件内容1.1.1. 页面结构体1.1.2. 为Page结构体绑定方法&#xff1a;Save1.1.3. 对Page结构体支持页面内容查看方法&#xff0c;同时提供页面文件是否存在的方法 1.2. 简单验证上面…

如何快速完成企业私有云部署

快解析赋能企业私有云部署 ​ 很多企业形成了以总部为中心的多点生产体系结构&#xff0c;并借助网络化办公工具搭建跨区域协同办公系统&#xff0c;满足总部与分支机构间的信息互通&#xff0c;进而促进异地业务的信息共享&#xff0c;提高办公处理效率和综合管理水平。 北…

参与创作①周年啦~

写在前面 今天看了消息才知道&#xff0c;原来开始创作已经一年了。此篇无干货&#xff0c;纯白话&#xff0c;纯记录。 机缘 参与CSDN创作已经一年有余&#xff0c;犹记得第一篇博文是为了整理好所学内容&#xff0c;方便自己复习。没想到后面也陆陆续续发了些其他内容&…

python的websocket方法教程

WebSocket是一种网络通信协议&#xff0c;它在单个TCP连接上提供全双工的通信信道。在本篇文章中&#xff0c;我们将探讨如何在Python中使用WebSocket实现实时通信。 websockets是Python中最常用的网络库之一&#xff0c;也是websocket协议的Python实现。它不仅作为基础组件在…

SIMULINK 单相半波整流电路仿真

SIMULINK 单相半波整流电路仿真 去除毛刺&#xff0c;改步长 光滑如下&#xff1a;

嵌入版python作为便携计算器(安装及配置ipython)

今天用别的电脑调试C&#xff0c;需要计算反三角函数时发现没有趁手工具&#xff0c;忽然想用python作为便携计算器放在U盘&#xff0c;遂想到嵌入版python 懒得自己配可以直接下载&#xff0c;使用方法见第4节 1&#xff0c;下载embeddable python&#xff08;嵌入版python&…

PCTFWP

web Sign In 查看源代码&#xff0c;访问提示文件就可得到flag easyupload 先上传一个图片马&#xff0c;会提示特洛伊文件&#xff0c;于是就改文件名&#xff0c;重新上传就可以得到flag 类似&#xff1a; [MoeCTF 2022]what are y0u uploading&#xff1f; 先做我 ?po…

SRR参考设计中SRR_DSS_mmWaveTask函数源码分析

相应的说明都已注释的形式写出来。 上面两个中断是在初始化的时候注册的&#xff0c;在SRR_DSS_initTask函数中&#xff0c;如下所示 后面会接着分析函数MmwDemo_processChirp和MmwDemo_interFrameProcessing。

维普论文查重率高【详细说明】

大家好&#xff0c;今天来聊聊维普论文查重率高&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff1a; 维普论文查重率高&#xff1a;原因分析与降重技巧 背景介绍 在学术领域&#xff0c;论文的重复率是衡量其…

一文2500字使用Python进行GRPC和Dubbo协议的高级测试

01、GRPC测试 GRPC&#xff08;Google Remote Procedure Call&#xff09;是一种高性能、开源的远程过程调用&#xff08;RPC&#xff09;框架&#xff0c;由 Google开发并基于Protocol Buffers&#xff08;protobuf&#xff09;进行通信。它使用了HTTP/2协议作为传输层&#…

机器学习-聚类问题

前言 聚类算法又叫做”无监督分类“&#xff0c;目标是通过对无标记训练样本来揭示数据的内在性质及 规律&#xff0c;为进一步的数据分析提供基础。 Kmeans 作为聚类算法的典型代表&#xff0c;Kmeans可以说是最简单的聚类算法&#xff0c;没有之一&#xff0c;那她是怎么完…

元宇宙:重塑游戏行业体验下一个前沿

游戏行业在其整个历史中经历了显著的转变&#xff0c;从超级马里奥的像素化冒险发展到Red Dead Redemption等游戏中迷人的开放世界体验。随着时间的推移&#xff0c;游戏不断突破数字领域所能达到的极限。然而&#xff0c;被称为元宇宙的突破性演变将彻底改变游戏行业&#xff…

Python-关系运算符详解

关系运算符&#xff1a;比较两个操作数的大小或者相等关系 < > ! 1、关系运算符的关系表达式返回值是布尔类型bool 成立就是真&#xff0c;即1&#xff1b;不成立就是假&#xff0c;即0 2、关系运算符还可以比较字符 字符根据字典序比较&#xff0c;先看首字母在…

【MySQL】-日志系统

一、背景介绍 MySQL中提供了各种各样的日志&#xff0c;每一个日志在不同的阶段有不同的作用&#xff0c;对数据的一致性和正确性得到保障&#xff0c;为数据恢复也提供至关重要的作用&#xff0c;那今天我们一起来讨论讨论MySQL中的各个日志 二、正文 binlog&#xff1a;…

MIT线性代数笔记-第26讲-对称矩阵及正定性

目录 26.对称矩阵及正定性打赏 26.对称矩阵及正定性 实对称矩阵的特征值均为实数&#xff0c;并且一定存在一组两两正交的特征向量 这对于单位矩阵显然成立 证明特征值均为实数&#xff1a; ​    设一个对称矩阵 A A A&#xff0c;对于 A x ⃗ λ x ⃗ A \vec{x} \lambda…

基于YOLOv7算法和Caltech数据集的高精度行人目标检测识别系统(PyTorch+Pyside6+YOLOv7)

摘要&#xff1a;基于YOLOv7算法和Caltech数据集的高精度行人目标检测系统可用于日常生活中检测与定位行人目标&#xff0c;此系统可完成对输入图片、视频、文件夹以及摄像头方式的目标检测与识别&#xff0c;同时本系统还支持检测结果可视化与导出。本系统采用YOLOv7目标检测算…