搭建DM-VIO环境以及dm-vio-ros的安装(免make install)

文章详细介绍了如何在Ubuntu系统中编译DM-VIO和DM-VIO-ROS项目,包括安装依赖库GTSAM和Pangolin的具体步骤,以及针对特定版本的处理方法。此外,还提到了Librealsense的使用情况和数据集的运行方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、DM-VIO:

克隆仓库:

git clone https://github.com/lukasvst/dm-vio.git

安装依赖:

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

安装GTSAM (必需)(其实只需要编译即可,不需要install)(一定要4.2a6):

# 在home路径下我创建了software文件夹,我都是克隆到这个文件夹下的
sudo apt install libtbb-dev
git clone https://github.com/borglab/gtsam.git
cd gtsam
git checkout 4.2a6
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 -j

编译以后,在build/gtsam路径下,会出现config.hdllexport.h两个文件,我们把这两个文件放到build的上一路径下,也就是gtsam文件夹下。

安装Pangolin(必需)(其实只需要编译即可,不需要install)(一定要0.6):

# 在home路径下我创建了software文件夹,我都是克隆到这个文件夹下的
sudo apt install libgl1-mesa-dev libglew-dev pkg-config libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
git checkout v0.6
mkdir build
cd build
cmake ..
cmake --build .

一些其它可选的包:

Librealsense:

如果你要使用IntelRealsense相机,这是必须的,详情请查看https://github.com/lukasvst/dm-vio/blob/master/doc/RealsenseLiveVersion.md,如果你要使用它,并且你的ros版本是ROS1,那么你应该选择librealsense2.50版本,因为realsense-ros包支持ROS1的最后版本是2.3.2,这个版本的rospackage只支持2.50版本的SDK。

GTest (可选):

我没装,不到有啥用

ziplib 可选):

我的ubuntu20.04貌似系统自带。

编译DM-VIO:

修改CMakelist.txt:

注释:find_package(GTSAM REQUIRED)
改成:

message(STATUS "-------------------------------------------------------------------")
set(GTSAM_DIR $ENV{HOME}/software/gtsam4.2a6/build)
MESSAGE(${GTSAM_DIR})
find_package(GTSAM EXACT)
message(STATUS "-------------------------------------------------------------------")

注释:find_package(Pangolin 0.2 QUIET)
改成:

message(STATUS "-------------------------------------------------------------------")
set(Pangolin_DIR $ENV{HOME}/software/pangolin0.6/build)
MESSAGE(${Pangolin_DIR})
find_package(Pangolin 0.6 EXACT)
message(STATUS "-------------------------------------------------------------------")

为了验证修改寻找库的路径,我一般会加上打印版本,以验证修改成功:
add_definitions("-DENABLE_SSE")前,加上:

message(STATUS "-------------------------------------------------------------------")
MESSAGE("GTSAM VERSION:")
MESSAGE(${GTSAM_VERSION})
MESSAGE("Pangolin VERSION:")
MESSAGE(${Pangolin_VERSION})
MESSAGE("EIGEN3 VERSION:")
MESSAGE(${EIGEN3_VERSION})
MESSAGE("OPENCV VERSION:")
MESSAGE(${OpenCV_VERSION})
message(STATUS "-------------------------------------------------------------------")

二、dm-vio-ros:

编译:

我是按照这个文章走的流程:
https://blog.youkuaiyun.com/iwanderu/article/details/126117565
其中只需要修改这个功能包里的CMakelist.txt:
注释:find_package(GTSAM REQUIRED)
改成:

message(STATUS "-------------------------------------------------------------------")
set(GTSAM_DIR $ENV{HOME}/software/gtsam4.2a6/build)
MESSAGE(${GTSAM_DIR})
find_package(GTSAM EXACT)
message(STATUS "-------------------------------------------------------------------")

运行数据集:

使用作者脚本运行数据集:

https://blog.youkuaiyun.com/weixin_43468805/article/details/125614169

自己下载:

自行去euroc数据集网站下载V2_01_easy.bag
然后按照这篇文章最后的办法去运行:https://blog.youkuaiyun.com/iwanderu/article/details/126117565
注意:rosrun前要roscore

<think>好的,我现在需要处理用户关于DM-VIO项目的查询。用户希望了解该项目的实现、介绍和相关资料。首先,我需要整理已有的引用信息,确保回答准确。 根据提供的引用,DM-VIO是用于视觉惯性里程计的库,基于C++和ROS实现。主要功能包括延迟边缘化和位姿图优化,支持T265相机配置。项目资料包括GitCode上的源码和论文。 接下来,我需要按照用户的要求结构化回答。用户提到系统级指令中的格式要求,比如行内数学公式用$...$,独立公式用$$...$$,但当前内容中没有涉及数学公式,可能需要检查是否有必要添加,但暂时看来可能不需要。此外,需要生成相关问题,并确保引用正确。 要确保回答分点清晰,涵盖项目基础、技术特点、应用场景、相关资源以及配置示例。引用需要自然地附加在相关段落末尾。例如,项目地址引用[^2][^3],配置示例引用[^4]。 然后,生成相关问题,考虑用户可能关心的扩展方向,如技术原理、优化方法、与其他系统的比较、配置问题等。 最后,检查是否符合所有格式要求,没有使用任何Markdown,中文回答,引用正确。确保没有遗漏关键信息,如项目主要语言、论文链接、实际应用等。</think>以下是与DM-VIO项目相关的技术实现和资料整理: ### 一、DM-VIO项目基础 1. **核心功能** 基于视觉惯性里程计(VIO)的实时定位与建图系统,通过融合相机和IMU数据实现高精度姿态估计,支持延迟边缘化(Delayed Marginalization)和位姿图优化技术[^3]。 2. **主要编程语言** 项目基于C++实现,集成ROS(Robot Operating System)框架,适用于机器人导航和SLAM场景[^3]。 --- ### 二、技术特点 1. **延迟边缘化** 通过动态延迟状态边缘化处理,减少线性化误差累积,提升系统鲁棒性。数学表达可描述为: $$ \min_{\mathbf{x}} \sum_{i} \| r_i(\mathbf{x}) \|^2_{\Sigma_i} $$ 其中$\mathbf{x}$为状态变量,$r_i$为残差项,$\Sigma_i$为协方差矩阵。 2. **传感器支持** 适配T265相机等设备,配置文件示例: ```yaml settingsFile=/PATH_TO/dm-vio/configs/t265_noise_tumvi.yaml # 包含IMU噪声参数 ``` --- ### 三、应用场景 - 无人机自主导航 - AR/VR设备定位 - 移动机器人SLAM --- ### 四、相关资源 1. **源码与论文** - 项目地址:[GitCode仓库](https://gitcode.com/gh_mirrors/dm/dm-vio) - 原始论文:代码库中附带的《DM-VIO: Delayed Marginalization Visual-Inertial Odometry》 2. **配置示例** ROS话题重映射配置: ```bash cam0/image_raw:=/camera/fisheye1/image_raw # 图像话题映射 imu0:=/camera/imu # IMU数据映射 ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值