DM-VIO(ROS)+t265配置运行记录(ubuntu18.04+ros melodic)

在工作中需要对DM-VIO算法进行测试,于是配置并记录了一下:

首先运行ros接口的dm-vio,一定要先配置源码

https://github.com/lukasvst/dm-vio在这个网址把源码下载下来并解压,并安装一下依赖:

sudo apt-get install cmake libsuitesparse-dev libeigen3-dev libboost-all-dev libyaml-cpp-dev

然后安装GTSAM,这个是dm-vio的后段优化库,一定要是 4.2a6版本的,先安装下依赖:

sudo apt install libtbb-dev

然后在 https://github.com/borglab/gtsam.git下载:

然后解压并执行:

mkdir build && cd build
cmake -DGTSAM_POSE3_EXPMAP=ON -DGTSAM_ROT3_EXPMAP=ON -DGTSAM_USE_SYSTEM_EIGEN=ON -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..
make -j12
sudo make install

这个过程很慢,大家耐心等待。

然后是opencv,这个我们装过ros,用自带的就可以,笔者是ubuntu18.04 ros melodic的自带3.2.0版本的opencv。

然后是pangolin,github上需要0.6版本,但是笔者环境中存在0.5版本的,为了不影响其他项目运行且不污染环境,笔者这里选择多版本共存,具体可看笔者之前写的opencv3.4.5多版本共存,原理是一样的。

还有一个问题是笔者这个版本的boost是1.65的,但是gtsam要求最低为1.73的boost,于是笔者又安装了boost1.73,去官网https://archives.boost.io/release/1.73.0/source/下载好包后:

./boottrap.sh --with-libraries=all
./b2
sudo  ./b2 install --prefix=/usr/local/boost1.73

依旧是在用的时候set一下就好

修改cmakelists.txt:

set(Pangolin "/usr/local/pangolin-0.6/include/pangolin")
set(BOOST_ROOT "/usr/local/boost-1.73")

还有一处如果不修改汇报错:

CMake Error at CMakeLists.txt:198 (add_executable):
Target “dmvio_t265” links to target “Boost::regex” but the target was not
found. Perhaps a find_package() call is missing for an IMPORTED target, or
an ALIAS target is missing?

CMake Error at CMakeLists.txt:191 (add_executable):
Target “dmvio_dataset” links to target “Boost::regex” but the target was
not found. Perhaps a find_package() call is missing for an IMPORTED
target, or an ALIAS target is missing?

这里在cmakelist.txt中find boost时做添加就好了:

find_package(Boost 1.73 REQUIRED COMPONENTS system thread filesystem chrono serialization date_time timer regex)

然后安装boost1.73后又会在yaml-cpp中报错:/usr/include/yaml-cpp/node/detail/iterator.h:48:54: error: ‘next’ is not a member of ‘boost’    48 |   void increment() { this->base_reference() = boost::next(this->base()); }这是因为比较新的boost版本中可能出现找不到迭代器next方法

在/usr/include/yaml-cpp/node/detail/iterator.h这个路径下,找到这个文件:sudo gedit iterator.h之后,添加头文件#include<boost/next_prior.hpp>就好了。

然后应该就没什么问题了,小伙伴有什么报错都可以发在评论区,我有时间会看,能解答的一定解答给大家

mkdir build
cd build
cmake ..
make -j12

接下来是ros接口,在刚刚的子文件路径下建一个文件夹,把ros接口的包放在里面解压,在编译之前,我们要确保可以找到刚刚编译的:sudo gedit ~/.bashrc,在里面加上:

export DMVIO_BUILD=/PATH/TO/dm-vio/build

然后修改cmakelist.txt:

还是刚刚的pangolin和boost,这里还要在大概90行左右加:

add_dependencies(${PROJECT_NAME}_node ${PROJECT_NAME}_generate_messages_cpp)

不然编译的时候会因为找不到生成的msg格式而报错 

catkin_make
source devel/setup.bash

这里可能会出现刚刚安装的新版本boost库中的某些包找不到的情况,

/home/shikai/dm-vio-catkin_ws/src/dm-vio-master/ROS/devel/lib/dmvio_ros/node: error while loading shared libraries: libboost_serialization.so.1.73.0: cannot open shared object file: No such file or directory

这是因为之前没设置环境变量:

sudo gedit /etc/ld.so.conf
#将如下我们自己的so所在路径添加到这个文件中
/usr/local/boost-1.73/lib

然后还要执行才可以生效:

cd /etc
ldconfig

笔者到这里就配置完成了。

网上的博客接下来大多是如何运行数据集,但是笔者要使用t265实时跑,并初步查看下建图效果

roscore
rosrun dmvio_ros node nogui=0 useimu=1 quiet=1 mode=3   calib=/home/shikai/dm-vio-catkin_ws/src/dm-vio-master/configs/tumvi_calib/camera02.txt                imuCalib=/home/shikai/dm-vio-catkin_ws/src/dm-vio-master/configs/tumvi_calib/test1-camchain-imucam.yaml               gamma=/home/shikai/dm-vio-catkin_ws/src/dm-vio-master/configs/pcalib_linear_8bit.txt                vignette=/home/shikai/dm-vio-catkin_ws/src/dm-vio-master/configs/realsense/vignette_t265.png                 settingsFile=/home/shikai/dm-vio-catkin_ws/src/dm-vio-master/configs/t265_noise_tumvi.yaml                 resultsPrefix=/home/shikai/dm-vio-catkin_ws/result          cam0/image_raw:=/camera/fisheye1/image_raw imu0:=/camera/imu

这是笔者的执行命令,根据github中给的改的,

nogui=0: 启动时不显示 GUI(图形界面)。这里设置为 0,意味着不禁用 GUI。
useimu=1: 使用 IMU 数据(设置为 1 表示启用 IMU 数据)。
quiet=1: 静默模式,减少输出。
mode=3: 模式设置为 3,表示使用特定的校准模式(比如没有曝光控制但有光晕校准),这通常与相机配置(如曝光、增益等)有关。
calib=/PATH_TO/RealsenseCalibration/camera.txt: 相机的校准文件,包含相机内参和外参。
imuCalib=/PATH_TO/RealsenseCalibration/factory_camchain.yaml: IMU 校准文件,包含与 IMU 相关的校准数据。
gamma=PATH_TO/dm-vio/configs/pcalib_linear_8bit.txt: Gamma 校正文件,用于相机图像的后处理。
vignette=PATH_TO/dm-vio/configs/realsense/vignette_t265.png: 鱼眼镜头的光晕校正文件,用于校正相机图像中的光晕效应。

settingsFile=/PATH_TO/dm-vio/configs/t265_noise_tumvi.yaml: VIO(视觉惯性里程计)系统的配置文件,包含噪声参数等。
resultsPrefix=/PATH_TO_RESULTS/: 结果保存的文件夹路径。
cam0/image_raw:=/camera/fisheye1/image_raw: 重映射 ROS 话题,将 /camera/fisheye1/image_raw 数据传递到 cam0/image_raw。
imu0:=/camera/imu: 重映射 IMU 话题,将 /camera/imu 数据传递到 imu0。

同时打开t265的lanunch文件,将相机启动:工作原因,(将image打马了)

初始化代价太大了,不过可以看到半稠密建图效果还是很顶的,这个只是看下效果,考虑精度的话需要做光度标定,先留个坑,过一段时间再来填

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pageoffice最新版本浏览器点击没反应解决办法

一、问题现象 最新版本的谷歌、火狐浏览器&#xff0c;调用pageoffice时&#xff0c;点击后没反应&#xff08;旧的谷歌浏览器不受影响&#xff09;。 二、产生原因 服务器返回pageOffice的客户端唤起链接格式为&#xff1a; PageOffice://|http://192.168.1.120:8080/xxx …

【Linux相关】服务器无网情况配置conda

【Linux相关】 服务器无网情况配置conda 文章目录 环境配置1. 本地下载miniconda&#xff0c;传到服务器2. 确认安装包是否传送成功3. 确保有安装权限4. 安装5. 写路径6. 看一下是否成功 环境配置 ssh的话&#xff0c;服务器连不上网&#xff0c;无法在线下载&#xff0c;需要本…

鸿蒙学习使用模拟器运行应用(开发篇)

文章目录 1、系统类型和运行环境要求2、创建模拟器3、启动和关闭模拟器4、安装应用程序包和上传文件QA:在Windows电脑上启动模拟器&#xff0c;提示未开启Hyper-V 1、系统类型和运行环境要求 Windows 10 企业版、专业版或教育版及以上&#xff0c;且操作系统版本不低于10.0.18…

Android studio 签名加固后的apk文件

Android studio打包时&#xff0c;可以选择签名类型v1和v2&#xff0c;但是在经过加固后&#xff0c;签名就不在了&#xff0c;或者只有v1签名&#xff0c;这样是不安全的。 操作流程&#xff1a; 1、Android studio 对项目进行打包&#xff0c;生成有签名的apk文件&#xff…

【科研】9如何高效阅读和理解学术论文

【科研】9如何高效阅读和理解学术论文 写在最前面一、为什么需要系统的阅读方法&#xff1f;二、阅读论文的11步方法三、实践示例四、常见问题解答五、结语 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时光&#xff0c;感谢你的陪伴与支持 ~ …

3.22【计组】 流水线加法器

实验一 timescale 1ns / 1ps/* ALU模块实现两个32bit数的add、sub、and、or、not、slt功能&#xff0c; 但由于Nexy7输入口限制&#xff0c;将num1简化为8位&#xff0c;在过程中再extend成32位&#xff0c;num2作为内部wire自行赋值&#xff0c;此处赋为5 由于最后的结果在to…

算法与数据结构练习——异或

知识点讲解&#xff1a; 一、异或操作定义&#xff1a; 异或是指相同为0&#xff0c;不同为1&#xff0c;也可理解为无进位相加&#xff01;&#xff01; 很重要&#xff01;&#xff01; 二、关于异或运算的几个性质&#xff1a; 1.0^NN &#xff08;0和任何数异或都…

计算机的错误计算(一百六十九)

摘要 探讨 MATLAB 中一个不动点的计算精度问题。 不动点是一类特殊的循环迭代。它有形式 例1. 已知迭代[1] 计算 显然&#xff0c;每个 均为 0.5 . 下面看看 MATLAB 的计算结果。不妨不用循环语句&#xff0c;直接用算术表达式表示 这时计算结果在如下图片&#xff1a; …

11.25.2024刷华为OD

文章目录 HJ76 尼科彻斯定理&#xff08;观察题&#xff0c;不难&#xff09;HJ77 火车进站&#xff08;DFS&#xff09;HJ91 走格子方法&#xff0c;&#xff08;动态规划&#xff0c;递归&#xff0c;有代表性&#xff09;HJ93 数组分组&#xff08;递归&#xff09;语法知识…

思科实现网络地址转换(NAT)和访问控制列表(ACL)和动态路由配置并且区分静态路由和动态路由配置。

实验拓扑(分为静态路由和动态路由两种) 静态路由互通 动态路由互通 实验背景 这个是想实现外网与内网的连接跟网络的探讨&#xff0c;最终实现互通以及使用并且在网络地址转换后能使用网络然后再这个基础上再配置访问控制列表和网络地址转换的的学习过程。 实验需了解的知识…

Idea 2024.3 突然出现点击run 运行没有反应,且没有任何提示。

写这篇文章的目的是为了提供一个新的解决思路&#xff0c;因为存在同病不同原因。 如果你进行了1. 检查运行配置 (Run Configuration) 2. 清理和重建项目 3. 清除缓存并重启 IDEA 4.排除kotlin 5.重装idea等等操作之后仍然没有解决&#xff0c;可以试着按一下步骤进行解决。 检…

数据结构--树二叉树顺序结构存储的二叉树(堆)

前言 前面我们学习了顺序表、链表、栈和队列&#xff0c;这些都是线性的数据结构。今天我们要来学习一种非线性的数据结构——树。 树的概念及结构 树的概念 树是一种非线性的数据结构&#xff0c;是由n&#xff08;n≥0&#xff09;个有效结点组成的一个具有层次关系的集合…

qt QProxyStyle详解

1、概述 QProxyStyle是Qt框架中QStyle类的一个子类&#xff0c;它提供了一种代理机制&#xff0c;允许开发者在不直接修改现有样式&#xff08;QStyle&#xff09;实现的情况下&#xff0c;对样式行为进行定制或扩展。通过继承QProxyStyle&#xff0c;开发者可以重写其虚方法&…

STL基本算法之copy与copy_backward

copy 不论是对客端程序或对STL内部而言&#xff0c;copy()都是一个常常被调用的函数。由于copy进行的是复制操作&#xff0c;而复制操作不外乎应用assignment operator或者copy construct(copy 算法用的是前者)&#xff0c;但是某些元素型别拥有的是trivial assignment operato…

不可分割的整体—系统思考的微妙法则

不可分割的整体——系统思考的微妙法则 作为企业领导者&#xff0c;我们经常需要做出决策&#xff0c;但有时候&#xff0c;我们会忽略一个事实&#xff1a;每个决策都不是孤立的&#xff0c;它背后都是一个复杂系统的一部分。 无论是市场动态、团队协作&#xff0c;还是产品…

云计算基础-期末复习

第一章&#xff1a;云计算概论 一、云计算的定义与特征 1. 定义&#xff1a; 云计算是一种通过网络以按需、可扩展的方式获取计算资源和服务的模式。它将计算资源视为一种公用事业&#xff0c;用户可以根据需求动态获取和释放资源&#xff0c;而无需了解底层基础设施的细节。…

基于Java的小程序电商商城开源设计源码

近年来电商模式的发展越来越成熟&#xff0c;基于 Java 开发的小程序电商商城开源源码&#xff0c;为众多开发者和企业提供了构建个性化电商平台的有力工具。 基于Java的电子商城购物平台小程序的设计在手机上运行&#xff0c;可以实现管理员&#xff1b;首页、个人中心、用户…

【机器学习】机器学习的基本分类-监督学习-逻辑回归-对数似然损失函数(Log-Likelihood Loss Function)

对数似然损失函数&#xff08;Log-Likelihood Loss Function&#xff09; 对数似然损失函数是机器学习和统计学中广泛使用的一种损失函数&#xff0c;特别是在分类问题&#xff08;例如逻辑回归、神经网络&#xff09;中应用最为广泛。它基于最大似然估计原理&#xff0c;通过…

Milvus 2.5:全文检索上线,标量过滤提速,易用性再突破!

01. 概览 我们很高兴为大家带来 Milvus 2.5 最新版本的介绍。 在 Milvus 2.5 里&#xff0c;最重要的一个更新是我们带来了“全新”的全文检索能力&#xff0c;之所以说“全新”主要是基于以下两点&#xff1a; 第一&#xff0c;对于全文检索基于的 BM25 算法&#xff0c;我们采…

RHCE作业五-shell脚本

一要求&#xff1a; 通过shell脚本分析部署nginx网络服务 1.接收用户部署的服务名称 2.判断服务是否安装 ​ 已安装&#xff1b;自定义网站配置路径为/www&#xff1b;并创建共享目录和网页文件&#xff1b;重启服务 ​ 没有安装&#xff1b;安装对应的软件包 3.测试 判断服务…