当前位置: 首页 > article >正文

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.kler.cn/a/416536.html

相关文章:

  • Conda 管理python开发环境
  • ip租期到了
  • github webhooks 实现网站自动更新
  • 服务器命令行复制文件
  • uniapp的video组件截图(抓拍)功能,解决截后为黑图bug
  • RabbitMQ学习-Seven
  • Maven - 优雅的管理多模块应用的统一版本号
  • 利用Java爬虫精准获取淘宝商品详情的探索之旅
  • Mac 环境下类Xshell 的客户端介绍
  • 周期性移动模式地铁乘客流量预测
  • git 本地同步远端分支
  • 记录一次 k8s 节点内存不足的排查过程
  • requests文件上传和表单参数
  • Golang 构建学习
  • Java爬虫:深入探索1688接口的奥秘
  • Elasticsearch实战:从搜索到数据分析的全面应用指南
  • Vue封装组件
  • 详解collections库常用的数据结构
  • hive和spark读写分区表NULL列
  • 哈希表算法题
  • Oracle系列---【关闭归档日志】
  • RL78/G15 Fast Prototyping Board Arduino IDE 平台开发过程
  • 【数据湖仓】-- 阿里云 EMR 和 AWS EMR 工具对比
  • 【Redis】Redis介绍
  • word2vec
  • 娱乐API:快速生成藏头诗、藏尾诗和藏中诗