RGB-D相机建图——2、openvins安装、测试与连接自己设备

基础内容贴推荐:
https://zhuanlan.zhihu.com/p/93814423
https://blog.csdn.net/weixin_39752599/article/details/105906652
https://zhuanlan.zhihu.com/p/95786850

论文:
http://udel.edu/~pgeneva/downloads/papers/c10.pdf

官方文档:
https://docs.openvins.com/

OpenVINS项目包含一些核心计算机视觉代码以及基于过滤器的最新视觉惯性估计器。核心滤波器是扩展卡尔曼滤波器,可将惯性信息与稀疏的视觉特征轨迹融合在一起。这些视觉特征轨迹是利用多状态约束卡尔曼滤波器(MSCKF)滑动窗口公式融合而成的,该公式允许3D特征更新状态估计,而无需直接估计滤波器中的特征状态。受到基于图的优化系统的启发,所包含的过滤器具有模块化功能,可通过适当的基于类型的状态系统方便地进行协方差管理。

一. 前期安装🕒

  • 入门指南-> 安装指南: https://docs.openvins.com/gs-installing.html
    按照顺序安装opencv依赖,新建工作空间git clone openvins的工程文件,进行编译
    (git clone原版github链接可能会慢,可以采用gitee导入已有库:https://gitee.com/hongliyu-lvliyu/open_vins)

  • 报错1:
    在执行:

cmake -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules ..

卡住到:
– IPPICV: Download: ippicv_2020_lnx_intel64_20191018_general.tgz

错误原因
文件放置地址被墙
其他博主解释贴: https://blog.csdn.net/gadwgdsk/article/details/107423625
可以单独去下载这个压缩包放置到相关文件夹下

解决方法

  • 报错2:

在执行:

catkin build -DDISABLE_MATPLOTLIB=ON # build without viz

错误:

‘ROS_ERROR’ was not declared in this scope
     ROS_ERROR("Unable to plot the state error, just returning..");

解决方法:
1) 按提示的路径找到该文件,看 .h 文件中头文件是否没有包含#include <ros/ros.h>

2) 在上段有warning:

WARNING: Your current environment's CMAKE_PREFIX_PATH is different from the cached CMAKE_PREFIX_PATH used the last time this
workspace was built.

按照warning提示进行

catkin clean

最后openvins编译顺利完成即可。
opencv的依赖并不一定非要下载,ROS自带的3.2可以编译通过

二. 进行测试

1. 下载数据集

数据集地址:https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets

个人下载了Vicon Room 101,得到文件 V1_01_easy.bag

V1_01_easy.csv文件位于以下路径中,不需要单独进行下载。

~/catkin_ov/src/open_vins/ov_data/euroc_mav
2. 修改launch
  • 新建一个路径,将 V1_01_easy.bag 放置进去,后续此地址用于修改launch
    例如个人的放置位置为: ~/vslam/datasets/euroc

  • 修改launch文件:pgeneva_serial_eth.launch

文件位置:

~/catkin_ov/src/open_vins/ov_msckf/launch

修改其中两行:

 <!-- bag parameters -->
        <param name="path_bag"    type="string" value="/home/zzx/vslam/datasets/euroc/V1_01_easy.bag" />
        <param name="path_gt"     type="string" value="$(find ov_data)/euroc_mav/V1_01_easy.csv" />
3. 运行

在openvins工程路径运行下列代码:

source devel/setup.bash
roslaunch ov_msckf pgeneva_serial_eth.launch

或者直接添加到bashrc

终端显示:
在这里插入图片描述
另外在launch文件夹下开新终端,运行:

rosrun rviz rviz -d display.rviz

rviz开启并显示:
在这里插入图片描述

三. 尝试连接自己的设备

1. 新在相同路径下(/catkin_ov/src/open_vins/ov_msckf/launch)建立一个新的launch文件;

参考 pgeneva_ros_eth.launch,连接自己的d435i相机,不使用数据包
主要变动:

 <!-- MASTER NODE! -->
    <node name="run_subscribe_msckf" pkg="ov_msckf" type="run_subscribe_msckf" output="screen" clear_params="true" required="true">


        <!-- bag topics -->
        <param name="topic_imu"      type="string" value="/imu0" />
        <param name="topic_camera0"  type="string" value="/cam0/image_raw" />
        <param name="topic_camera1"  type="string" value="/cam1/image_raw" />

由于还没有做相机标定,所以先不改数据部分

启动realsense-ros后,rostopic list发现没有新的launch文件的三个topic,因此需要进一步修改 realsense-ros的launch文件。

2. 修改realsense-ros的launch文件

参考文献: https://blog.csdn.net/qq_41839222/article/details/86552367#t4

使用了d435i相机

要修改的文件为:rs_camera.launch
路径:/catkin_realsense-ros/src/realsense-ros/realsense2_camera/launch
(一开始修改了很久,之后才发现之前是二进制安装,运行的时候总是没有运行这个路径下的 rs_camera.launch)

  • 需要修改的内容包括:
<arg name="unite_imu_method"          default="copy"/>  #IMU
<arg name="enable_infra"        default="true"/>
  <arg name="enable_infra1"       default="true"/>
  <arg name="enable_infra2"       default="true"/>  #对应上面23<arg name="enable_gyro"         default="true"/>  #陀螺仪
  <arg name="enable_accel"        default="true"/>    #加速度
    <arg name="enable_sync"               default="true"/>

自己还改了所有带 width 和 height的部分,自己的打开之后这些都是 -1,但是看有的 博主是不改的

<arg name="fisheye_width"       default="640"/>
  <arg name="fisheye_height"      default="480"/>
 <arg name="depth_width"         default="640"/>
  <arg name="depth_height"        default="480"/>
  <arg name="confidence_width"    default="640"/>
  <arg name="confidence_height"   default="480"/>
  <arg name="infra_width"         default="640"/>
  <arg name="infra_height"        default="480"/>
  <arg name="color_width"         default="640"/>
  <arg name="color_height"        default="480"/>

改完后 ctrl+S 保存

改好后,先在realsense-ros工程的路径下运行

source devel/setup.bash
roslaunch realsense2_camera rs_camera.launch
  • 此时,新开终端执行 rostopic list会看到有新的 imu 和 infra1 的话题加入
    在这里插入图片描述

  • 根据rostopic的内容,改写一下自己的launch文件

    如果没有写在bashrc里,记得要source

  <!-- bag topics -->
        <param name="topic_imu"      type="string" value="/camera/imu" />
        <param name="topic_camera0"  type="string" value="/camera/infra1/image_rect_raw" />
        <param name="topic_camera1"  type="string" value="/camera/infra2/image_rect_raw" />
  • 再到openvins的工程下,运行自己的launch文件

  • 再进入launch文件位置,运行

rosrun rviz rviz -d display.rviz

或者 直接写到launch文件里:
launch结尾:


    </node>
    <node type="rviz" name="rviz" pkg="rviz" args="-d $(find ov_msckf)/launch/display.rviz" />
</launch>

在这里插入图片描述此时左侧图片上可以看到有白点,是因为中间的红外,如果用胶带贴起来的话就没有拉

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值