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打马了)

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

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

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

相关文章

自动化运维(k8s)之微服务信息自动抓取:namespaceName、deploymentName等全解析

前言&#xff1a;公司云原生k8s二开工程师发了一串通用性命令用来查询以下数值&#xff0c;我想着能不能将这命令写成一个自动化脚本。 起初设计的 版本一&#xff1a;开头加一条环境变量&#xff0c;执行脚本后&#xff0c;提示输入&#xff1a;需要查询的命名空间&#xff0c…

【数据分析】布朗运动(维纳过程)

文章目录 一、概述二、数学布朗运动2.1 数学定义2.2 布朗运动的数学模型2.21 标准布朗运动2.22 布朗运动的路径2.23 布朗运动的方程 三、布朗运动在金融学中的应用四、数学构造&#xff08;以傅里叶级数为例&#xff09;4.1 傅里叶级数的基本思想4.2 构造布朗运动 一、概述 布…

Mybatis Plus 增删改查方法(一、增)

先定义一个简单的测试表&#xff0c;执行脚本如下&#xff1a; create table user(id bigint primary key auto_increment,name varchar(255) not null,age int not null default 0 check (age > 0) ); 根据Spingbootmybatisplus的结构根据表自行构建结构&#xff0c;大致…

基于Matlab的图像去噪算法仿真(二)

在信息化的社会里&#xff0c;图像在信息传播中所起的作用越来越大。所以&#xff0c;消除在图像采集和传输过程中而产生的噪声&#xff0c;保证图像受污染度最小&#xff0c;成了数字图像处理领域里的重要部分。 本文主要研究分析邻域平均法、中值滤波法、维纳滤波法及模糊小…

鸿蒙Next星河版基础代码

目录&#xff1a; 1、鸿蒙箭头函数的写法2、鸿蒙数据类型的定义3、枚举的定义以及使用4、position绝对定位及层级zIndex5、字符串的拼接转换以及数据的处理(1)字符串转数字(2)数字转字符串(3)布尔值转换情况(4)数组的增删改查 6、三元表达式7、鸿蒙for循环的几种写法7.1、基本用…

Node.js的url模块与querystring模块

新书速览|Vue.jsNode.js全栈开发实战-CSDN博客 《Vue.jsNode.js全栈开发实战&#xff08;第2版&#xff09;&#xff08;Web前端技术丛书&#xff09;》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) 4.3.1 http模块——创建HTTP服务器、客户端 要使用http模块&#xff0…

Conda 管理python开发环境

同步发布于我的网站 &#x1f680; 故事起因: 在公司使用Requests多任务并行开发时遇到了问题&#xff0c;使用 ProcessPoolExecutor 时不能正常发出网络请求&#xff0c;会卡在网络请求发不出去&#xff0c;但是善于用 ThreadPoolExecutor 时是可以的,纠结了很久&#xff0c;一…

LLamafactory 批量推理与异步 API 调用效率对比实测

文章目录 背景数据集构造LLamafactory 批量推理yaml 参数设置批量推理启动 LLamafactory API 部署结论项目开源 背景 在阅读 LLamafactory 的文档时候&#xff0c;发现它支持批量推理: 推理.https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/inference.html…

Android通过摄像头检测心率

话不多说&#xff0c;先看效果 Android通过摄像头测量心率 借鉴文章如下 Android通过摄像头计算心率、心率变异性 该文章的核心功能点已经很全了&#xff0c;为了方便使用&#xff0c;我这边整理成了工具类可直接使用 该功能全网文章还是比较少的&#xff0c;还是要感谢下借鉴…

测绘坐标数据封装处理

1、测绘数据 2、数据处理 public void dealData() {List<Map<String, Object>> shyqzdMapList 截图数据;Map<String, List<Map<String, Object>>> groupMap shyqzdMapList.stream().collect(Collectors.groupingBy(item -> String.valueOf…

一个开源轻量级的服务器资源监控平台,支持告警推送

大家好&#xff0c;今天给大家分享一款开源的轻量级服务器资源监控工具Beszel&#xff0c;提供历史数据记录、Docker容器统计信息监控以及多种警报功能&#xff0c;用于监控服务器资源。 项目介绍 Beszel由hub&#xff08;中心服务器端应用&#xff0c;基于PocketBase构建&…

SVG无功补偿装置MATLAB仿真模型

“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 SVG&#xff08;又称ASVG 或STATCOM&#xff09;是Static Var Generator 的缩写&#xff0c;叫做静止无功发生器。也是做无功补偿的&#xff0c;比SVC 更加先进。其基本原理是将自换相桥式电路通过电抗器或…

el-cascader 使用笔记

1.效果 2.官网 https://element.eleme.cn/#/zh-CN/component/cascader 3.动态加载&#xff08;官网&#xff09; <el-cascader :props"props"></el-cascader><script>let id 0;export default {data() {return {props: {lazy: true,lazyLoad (…

CQ 社区版 2024.11 | 新增“审批人组”概念、可通过SQL模式自定义审计图表……

CloudQuery 社区 11 月新版本来啦&#xff01;本月版本依旧是 CUG&#xff08;CloudQuery 用户组&#xff09;尝鲜版的更新。 针对审计模块增加了 SQL 模式自定义审计图表&#xff1b;在流程模块引入了“审批人组”概念。此外&#xff0c;在 SQL 编辑器、连接管理等模块都涉及…

【论文阅读】 Learning to Upsample by Learning to Sample

论文结构目录 一、之前的上采样器二、DySample概述三、不同上采样器比较四、整体架构五、设计过程&#xff08;1&#xff09;初步设计&#xff08;2&#xff09;第一次修改&#xff08;3&#xff09;第二次修改&#xff08;4&#xff09;第三次修改 六、DySample四种变体七、复…

微积分复习笔记 Calculus Volume 2 - 3.1

The first 2 chapters of volume 2 are the same as those in volume 1. Started with Chapter 3. 3.1 Integration by Parts - Calculus Volume 2 | OpenStax

智能化图书馆导航系统方案之系统架构与核心功能设计

hello~这里是维小帮&#xff0c;点击文章最下方获取图书馆导航系统解决方案&#xff01;如有项目需求和技术交流欢迎大家私聊我们~撒花&#xff01; 针对传统图书馆在图书查找困难、座位紧张、空间导航不便方面的问题&#xff0c;本文深入剖析了基于高精度定位、3D建模、图书搜…

鸿蒙学习自由流转与分布式运行环境-价值与架构定义(1)

文章目录 价值与架构定义1、价值2、架构定义 随着个人设备数量越来越多&#xff0c;跨多个设备间的交互将成为常态。基于传统 OS 开发跨设备交互的应用程序时&#xff0c;需要解决设备发现、设备认证、设备连接、数据同步等技术难题&#xff0c;不但开发成本高&#xff0c;还存…

第六届机器人、智能控制与人工智能国际(RICAI 2024)

会议信息 会议时间与地点&#xff1a;2024年12月6-8日&#xff0c;中国南京 会议官网&#xff1a;www.ic-ricai.org &#xff08;点击了解大会参会等详细内容&#xff09; 会议简介 第六届机器人、智能控制与人工智能国际学术会议&#xff08;RICAI 2024&#xff09;将于20…

PostgreSQL WAL日志膨胀处理

作者&#xff1a;Digital Observer&#xff08;施嘉伟&#xff09; Oracle ACE Pro: Database PostgreSQL ACE Partner 11年数据库行业经验&#xff0c;现主要从事数据库服务工作 拥有Oracle OCM、DB2 10.1 Fundamentals、MySQL 8.0 OCP、WebLogic 12c OCA、KCP、PCTP、PCSD、P…