VINS-MONO实践

2023-05-16

1.配置ros(运行VINS需要,记得换源,会快一些)

sudo apt-get install ros-melodic-cv-bridge ros-melodic-tf ros-melodic-message-filters ros-melodic-image-transport

解释:
cv-bridge在ROS图像消息和OpenCV图像之间转换。
message-filters一组消息过滤器,根据过滤器需要满足的条件,接收消息并在以后输出这些消息。
image-transport应始终使用图像传输来订阅和发布图像。它为以低带宽压缩格式传输图像提供支持

2.安装依赖库
1)eigen3.3.4版本(pkg-config --modversion eigen3命令看)

sudo apt-get install libeigen3-dev

2)安装opencv
进入到解压后的文件包中,由于我已经安装好cmake了,在此不多叙述

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev    
libswscale-dev libjasper-dev

创建文件夹

mkdir build 
cd build
cmake
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

完成后输入

sudo make

等待完成后再输入

sudo make install

完成编译,

cd到opencv-3.4.0/smaples/cpp/example_cmake目录下
我们可以看到这个目录里官方已经给出了一个cmake的example我们可以拿来测试下
按顺序执行

cmake . 
make 
./opencv_example

即可看到打开了摄像头,在左上角有一个hello opencv
即表示配置成功
在这里插入图片描述3.安装Ceres
安装依赖

sudo apt-get install liblapack-dev 
sudo apt-get install libsuitesparse-dev 
sudo apt-get install libcxsparse3 
sudo apt-get install libgflags-dev 
sudo apt-get install libgoogle-glog-dev libgtest-dev

下载源码:git clone https://github.com/ceres-solver/ceres-solver
进入Ceres的文件夹下
编译Ceres

mkdir build
cd build
cmake ..
sudo make install

4.Vins_mono的编译

git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git#在src下执行
catkin_make

打开四个终端分别运行以下命令:

roscore
roslaunch vins_estimator euroc.launch 
roslaunch vins_estimator vins_rviz.launch
rosbag play MH_01_easy.bag

结果:其中绿线表示基于VINS-Mono算法的估计轨迹,红线表示闭环。
在这里插入图片描述

rostopic echo /vins_estimator/odometry

在这里插入图片描述

如果想看到轨迹的同时,看到数据集的ground truth,我们可以再打开一个terminal,执行:

roslaunch benchmark_publisher publish.launch sequence_name:=MH_01_easy

然后,你就会看到两条轨迹,红色的轨迹是ground truth,绿色的轨迹是vins-mono跑出来的。
在这里插入图片描述
修改地图保存的路径
因为我们现在跑的是euroc数据集,所以我们要修改的地方有两处。

euroc_config.yaml中的pose_graph_save_path

pose_graph_save_path: “/home/kk/自己的路径/”

euroc_config.yaml中的output_path项

output_path: “/home/kk/自己的路径/”

上述""里填写自己的路径,先创建好该路径,注意最后面有个/,代表着是一个文件夹。 修改完之后,记得在ros工作空间中重新编译一下catkin_make。

保存地图
重新运行程序,待地图跑完之后,在运行 roslaunch vins_estimator euroc.launch 的terminal中,输入 “s” ,并按下回车键Enter,等待地图保存,我电脑花了20秒左右的时间。然后会出现下列信息:
在这里插入图片描述

之后会在保存的路径下出现一堆图片文件,地图保存成功。
在这里插入图片描述
重载地图
首先要修改两处地方:

euroc_config.yaml的load_previous_pose_graph,置1
euroc_config.yaml的fast_relocalization,置1

第一项的意思是使能重新加载地图功能,第二项是快速重定位。(你可以先不改第二项试试看,然后再改,看看有什么不同),修改完之后重新编译catkin_make。 重新运行程序,会发现先加载了地图,颜色是黄色的。
在这里插入图片描述加载地图之后的结果如下所示:

在这里插入图片描述在这里插入图片描述快速重定位实践如下:
在这里插入图片描述精度评测可采用evo工具,一个评测SLAM的工具。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VINS-MONO实践 的相关文章

随机推荐

  • 从Navicat切换到DBeaver的详细教程,一学即会。

    自从学会使用了Navicat xff0c 用一段时间发现Navicat有一些的问题缺陷 xff1a 1 需要购买花钱才能使用 xff0c 网上找的破解版也能使用 xff0c 但一些公司有版权限制 xff0c 又不能使用 xff1b 2 在连
  • VS code C/C++扩展包依赖cpptools-win32.vsix离线安装

    环境 xff1a 64位win10 xff0c VS code版本1 48 2 在visual studio code下自动安装C C 43 43 扩展包的依赖时 xff0c 可能会碰到如下异常和提示 xff1a 正在更新 C C 43 4
  • ROS错误:摄像头数据格式错误 wants topic /image/compressed to have datatype/md5sum

    ROS错误 摄像头数据格式错误 wants topic image compressed to have datatype md5sum 错误提示 xff1a ERROR 1260927377 348922000 Received erro
  • GMM-HMM声学模型实例详解(标贝科技)

    欢迎测试标贝科技AI开放平台 https ai data baker com source 61 qwer12 GMM HMM声学模型实例详解 GMM HMM为经典的声学模型 xff0c 基于深度神经网络的语音识别技术 xff0c 其实就是
  • C++学习笔记【六】—— 存储类

    Auto 声明变量时根据初始化表达式自动推断该变量的类型 声明函数时函数返回值的占位符 C 43 43 11已弃用 span class token keyword auto span f span class token operator
  • wget curl post请求

    wget header 61 User Agents Chrome header 61 Content Type Application json post data 61 url https zcool cloud resource te
  • 串口传输速率计算

    串口数据格式 起始位1bit xff0c 数据位8bit xff0c 停止位1bit xff0c 无校验 xff0c 无流控 xff1b 计算 波特率115200 bps xff1d 115200 位 秒 xff0c 没有校验位时 xff0
  • 位(bit), 字节(byte), 字(word),双字(dword or Qword)释义

    位 xff08 bit xff09 位 xff08 bit xff09 来自英文bit xff0c 音译为 比特 xff0c 表示二进制位 位是计算机内部数据储存的最小单位 xff0c 11010100是一个8位二进制数 一个二进制位只可以
  • IEEE754标准浮点数转换

    原文 xff1a https blog csdn net hqh131360239 article details 81353582 IEEE754标准浮点数转换 IEEE754标准是一种浮点数表示标准 xff0c 一般分为单 双精度两种
  • 高程初识

    高程是指某一点相对于基准面的高度 xff0c 目前常用的高程系统共有正高 正常高 力高和大地高程4种 xff0c 而高程基准各国均有不同定义 高程系统则是定义某点沿特定的路径到一个参考面上距离的一维坐标系统 高程系统 地球上某一点的高程通常
  • Source Insight4 设置相对路径

    source insight4 设置相对路径步骤 xff1a 1 xff09 新建工程 2 xff09 选择 project source directory时 xff0c 必须选择工程的根目录 xff01 3 xff09 选择文件并添加
  • STM32F407 Flash操作笔记

    简述 STM32F4XX的闪存擦除方式分为两种 xff1a 扇区擦除 xff08 最小单元16K xff09 和整片擦除 在实际应用中 xff0c 为满足重要信息的存储 xff0c 需将信息存入FLASH中 xff0c 针对以上两种擦除方式
  • STM32 软件按键消抖

    引言 通常按键所用的开关都是机械弹性开关 xff0c 当机械触点断开 闭合时 xff0c 由于机械触点的弹性作用 xff0c 一个按键开关在闭合时不会马上就稳定的接通 xff0c 在断开时也不会一下子彻底断开 xff0c 而是在闭合和断开的
  • STM32 中断函数SysTick_Handler理解

    目的 滴答定时器整理 xff08 STM32F103 xff09 用了一段时间的滴答定时器 xff0c 突然忘记其中配置方法 xff0c 重新翻阅手册及博文 xff0c 在此记录备忘 SysTick的重装寄存器决定了定时器频率 xff0c
  • srilm的安装与使用(标贝科技)

    欢迎体验标贝语音开放平台 地址 xff1a https ai data baker com source 61 qaz123 xff08 注 xff1a 填写邀请码hi25d7 xff0c 每日免费调用量还可以翻倍 xff09 一 简介 简
  • 信号强度(RSSI)知识整理

    为什么无线信号 xff08 RSSI xff09 是负值 答 xff1a 其实归根到底为什么接收的无线信号是负值 xff0c 这样子是不是容易理解多了 因为无线信号多为mW级别 xff0c 所以对它进行了极化 xff0c 转化为dBm而已
  • JLink 警告:The connected J-Link is defective,Proper operation cannot be guaranteed.

    概述 安装j link较新版本 xff08 JLink Windows V632b exe xff09 的驱动 xff0c 每烧录一次程序报一次警告 xff0c 警告如下 xff1a The connected J Link is defe
  • [PYTHON]修改当前进程环境变量

    myenv 61 os environ myenv 34 PATH 34 61 34 xxxx 34 43 myenv 34 PATH 34 注意 xff1a 此方法仅在python的当前进程中生效 xff0c 如果此时通过subproce
  • SO库版本号管理

    一 输入版本号 功能由Cmake软件实现 1 建立一个空白txt xff0c 重命名为config h in 输入代码 xff1a defineMAJOR VERSION 64 MAJOR VERSION 64 defineMINOR VE
  • VINS-MONO实践

    1 配置ros xff08 运行VINS需要 xff0c 记得换源 xff0c 会快一些 xff09 sudo apt get install ros melodic cv bridge ros melodic tf ros melodic