【SLAM】DM-VIO(ros版)安装和论文解读

本文详细介绍了dm-vio的安装步骤,包括gtsam、opencv、pangolin的安装,以及dm-vio-ros的ROS插件安装。重点讲解了如何编译和配置,并分享了论文链接。适合对视觉惯性导航感兴趣的开发者阅读。

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

1. dm-vio的安装

进入官方链接 ,基本上就是按照readme的操作来:

下载代码:

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

安装gtsam:

sudo apt install libtbb-dev
git clone https://github.com/borglab/gtsam.git
cd gtsam
git checkout 4.2a6          # not strictly necessary but this is the version tested with.
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
sudo make install

安装opencv:

sudo apt-get install libopencv-dev

安装pangolin:

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 .
sudo make install

这里要注意,如果电脑里没有pangolin,是可以编译的,但是不会生成可执行文件,所以这个仍然是必须安装的库,此外,必须是0.6版本。

git checkout v0.6

编译之前,进入到CMakeLists.txt, 19行增加regex:

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

编译:

cd dm-vio
mkdir build
cd build
cmake ..
make -j

编译完成后,在build/bin目录下,就能看到可执行文件dmvio_dataset。接下来,就可以按照官方的方法跑数据了。

2. dm-vio-ros的安装

接下来是ros插件的安装,由于市面上的代码和数据都是ros版的,使用起来比较方便。随便进入一个目录,推荐是刚刚安装的dm-vio的一个子目录下:

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

为了能让这个插件找到刚刚编译的dm-vio,所以一个偷懒的办法,就是在.bashrc加上一个环境变量:

sudo gedit ~/.bashrc

在最后面,加上:

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

catkin_make之前,仍然需要修改CMakeLists.txt,85行之后,增加一句:

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

不然编译的时候会因为找不到生成的msg格式而报错,最后就是:

catkin_make
source devel/setup.bash

尝试euroc数据集:

首先要在config里加上euroc的相机模型:

echo -e "458.654 457.296 367.215 248.375 -0.28340811 0.07395907 0.00019359 1.76187114e-05\n752 480\ncrop\n640 480\n" > camera.txt

就可以跑了:

rosrun dmvio_ros node calib=/PATH/TO/camera.txt settingsFile=/PATH/TO/dm-vio/configs/euroc.yaml mode=1 nogui=0 preset=1 useimu=1 quiet=1 init_requestFullResetNormalizedErrorThreshold=0.8 init_pgba_skipFirstKFs=1

rosbag play V2_01_easy.bag

效果如下,直接法的VIO效果真炫!

 

3. 论文

论文地址:https://arxiv.org/pdf/2201.04114.pdf

TODO,待续

<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数据映射 ``` ---
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值