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

news2024/11/28 12:30:38

前言

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的路径

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EasyX图形化学习

1.EasyX是什么&#xff1f; 是基于Windows的图形编程&#xff0c;给用户提供函数接口&#xff0c;最终函数调用会由Windows的API实现。 注&#xff1a;EasyX只适配 c 。 2.头文件&#xff1a; <easyx.h>---只包含最新的函数 <graphics.h>---包含<easyx.h&g…

前程无忧接口分析

前程无忧接口分析 所需用到的工具URL解析通过抓包软件或者开发者选项抓取数据包对代码中的参数解析分析对acw_sc__v2进行分析对acw_sc__v2进行转换代码生成生成outPutList数组生成arg2参数生成arg3参数最终的效果 对详情页面的分析对timestamp__1258的生成分析 所需用到的工具 …

一些系统日常运维命令和语句

一、前言 记录一些日常系统运维的命令和语句 二、linux命令与语句 1、linux查看各目录使用磁盘情况 du -h /home home为目录 du -h /home 2.查看内存使用情况 free -h 3、查看进程和CPU使用情况 top top 三、数据库语句 1、统计mysql数据库表数量 SELECT COUNT(*) A…

【爬取二手车并将数据保存在数据库中】

爬取二手车并将数据保存在数据库中 查看网页结构分析爬取步骤解密加密信息将密文解密代码&#xff1a; 进行爬取&#xff1a;爬取函数写入解密文件函数和获取城市函数解密文件&#xff0c;返回正确字符串函数保存到数据库 运行结果 查看网页结构分析爬取步骤 可以看出网页使用…

新版本AndroidStudio删除无用资源

第一步&#xff1a; 第二步&#xff1a; 第三步&#xff0c;等加载完&#xff0c;自己选择要删除的文件。 注意&#xff01;&#xff01;&#xff01; 可能会遇到没有显示无用资源&#xff0c;这时把项目运行在真机上就出来了。

学习pytorch19 pytorch使用GPU训练

pytorch使用GPU进行训练 1. 数据 模型 损失函数调用cuda()2. 使用谷歌免费GPU gogle colab 需要创建谷歌账号登录使用, 网络能访问谷歌3. 执行4. 代码 B站土堆学习视频&#xff1a; https://www.bilibili.com/video/BV1hE411t7RN/?p30&spm_id_frompageDriver&vd_sourc…

Python Authlib库:构建安全可靠的身份验证系统

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在现代应用程序中&#xff0c;安全性是至关重要的&#xff0c;特别是在处理用户身份验证时。Authlib库为Python开发者提供了一套强大的工具&#xff0c;用于简化和增强身份验证和授权流程。本文将深入探讨Authli…

js/jQuery常见操作 之各种语法例子(包括jQuery中常见的与索引相关的选择器)

js/jQuery常见操作 之各种语法例子&#xff08;包括jQuery中常见的与索引相关的选择器&#xff09; 1. 操作table常见的1.1 动态给table添加title&#xff08;指定td&#xff09;1.1.1 给td动态添加title&#xff08;含&#xff1a;获取tr的第几个td&#xff09;1.1.2 动态加工…

elasticsearch聚合、自动补全、数据同步

目录 一、数据聚合1.1 聚合的种类1.2 DSL实现聚合1.2.1 Bucket聚合语法1.2.2 聚合结果排序1.2.3 限定聚合范围1.2.4 Metric聚合语法 1.3 RestAPI实现聚合 二、自动补全2.1 拼音分词器2.2 自定义分词器2.3 自动补全查询2.4 RestAPI实现自动补全 三、数据同步3.1 思路分析3.1.1 同…

Java来实现二叉树算法,将一个二叉树左右倒置(左右孩子节点互换)

文章目录 二叉树算法二叉树左右变换数据 今天来和大家谈谈常用的二叉树算法 二叉树算法 二叉树左右变换数据 举个例子&#xff1a; Java来实现二叉树算法&#xff0c;将一个二叉树左右倒置&#xff08;左右孩子节点互换&#xff09;如下图所示 实现的代码如下&#xff1a;以…

CMake ‘3.10.2‘ was not found in PATH or by cmake.dir property.

在部署Yolov5到安卓端的过程中出现&#xff1a;CMake ‘3.10.2’ was not found in PATH or by cmake.dir property. 原因&#xff1a; cmake版本太高&#xff0c;需要安装低版本的cmake 最开始下载的是默认最高版本的cmake,默认是3.22.1&#xff0c;解决方案是&#xff0c;下载…

AIGC创作系统ChatGPT网站源码,Midjourney绘画,GPT联网提问/即将支持TSS语音对话功能

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…

C++初阶 | [七] (上) string类

摘要&#xff1a;标准库中的string类的常用函数 C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c; 但是这些库函数与字符串是分离开的&#xff0c;不太符合OOP(面向对象)的思想&#…

区块链创新应用场景不断拓展,实现去中心化

小编介绍&#xff1a;10年专注商业模式设计及软件开发&#xff0c;擅长企业生态商业模式&#xff0c;商业零售会员增长裂变模式策划、商业闭环模式设计及方案落地&#xff1b;扶持10余个电商平台做到营收过千万&#xff0c;数百个平台达到百万会员&#xff0c;欢迎咨询。 区块…

网络知识学习(笔记三)(传输层的TCP)

前面已经介绍了传输层的UDP协议的报文以及一下相关的知识点&#xff0c;本次主要是传输层的TCP协议&#xff0c;包括TCP报文的详细介绍&#xff1b;可靠传输、流量控制、拥塞控制等&#xff1b;建立连接、释放连接。 一、TCP基本知识点介绍 1.1、TCP协议的几个重要的知识点 …

联想电脑重装系统Win10步骤和详细教程

联想电脑拥有强大的性能&#xff0c;很多用户办公都喜欢用联想电脑。有使用联想电脑的用户反映系统出现问题了&#xff0c;想重新安装一个正常的系统&#xff0c;但是不知道重新系统的具体步骤。接下来小编详细介绍给联想电脑重新安装Win10系统系统的方法步骤。 推荐下载 系统之…

Elastcsearch:通过 Serverless 提供更多服务

作者&#xff1a;Ken Exner 人们使用 Elasticsearch 解决最大数据挑战的方式一直令我们感到惊讶。 从超过 40 亿次下载、70,000 次提交、1,800 名贡献者以及我们全球社区的反馈中可以清楚地看出这一点。 Elastic 在广泛的用例中发挥的作用促使我们简化复杂性&#xff0c;让搜索…

2023年12月8日:UI登陆界面

作业 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMovie> #include <QPushButton> #include <QDebug>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpub…

Liunx系统使用超详细(五)~命令符号

目录 一、逻辑符号 1.1&& 1.2|| 二、连接符号 2.1| 2.2> 2.3>> 2.4< 三、分隔符号 3.1 &#xff1b; 在Linux中&#xff0c;逻辑符号和连接符号常用于构建命令行中的逻辑操作和管道操作。下面对这两种符号进行总结描述。 一、逻辑符号 1.1&…

运维知识点-Nginx

Nginx Nginx解析安全实战预备知识实验目的#制作图片木马# web服务器-Nginx服务命令及配置centOS7安装安装所需插件安装gccpcre、pcre-devel安装zlib安装安装openssl Nginx解析安全实战 预备知识 NginxPHP/FastCGI构建的WEB服务器工作原理 Nginx|FastCGI简介 Nginx (“engin…