一、如何运行
1、安装依赖
注:YOUR_DISTRO换为自己的ros版本
sudo apt-get install ros-YOUR_DISTRO-cv-bridge ros-YOUR_DISTRO-tf ros-YOUR_DISTRO-message-filters ros-YOUR_DISTRO-image-transport
#笔者ros为18.04版本输入如下
sudo apt-get install ros-melodic-cv-bridge ros-melodic-tf ros-melodic-message-filters ros-melodic-image-transport
2、首先工作空间
如果你已经安装了视觉SLAM十四讲中的库就可以按照下面的指令在终端中输入。如果没有则需要去官网安装需要的库:https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git
你需要安装ROS和Ceres Solver。Ceres Solver库笔者之前有文章已经记录了安装方法需要的可以查看以下链接:
Ceres Solver从零开始手把手教学使用_每日亿学的博客-CSDN博客_ceres solver教程
mkdir -p catkin_ws/src
cd ./catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git
cd ..
catkin_make
3、运行
roslaunch vins_estimator euroc.launch
roslaunch vins_estimator vins_rviz.launch
rosbag play YOUR_PATH_TO_DATASET/MH_01_easy.ba
二、使用ROS
- 功能包:功能包(package)是构成ROS的基本单位。ROS应用程序是以功能包为单位开发的。查找功能包 :
find ./ -name "package.xml" #注意是在工作目录空间下进行寻找
可以看见有6个功能包:
- ./src/VINS-Mono-master/benchmark_publisher/package.xml #发送轨迹数据
- ./src/VINS-Mono-master/feature_tracker/package.xml #前段的功能包
- ./src/VINS-Mono-master/pose_graph/package.xml #回环检查的功能包
- ./src/VINS-Mono-master/vins_estimator/package.xml #后端的功能包
- ./src/VINS-Mono-master/camera_model/package.xml #相机模型功能包
- ./src/VINS-Mono-master/ar_demo/package.xml
节点:一个功能包至少有一个节点,一个节点可以理解成一个进程
消息:节点之间通过消息(message)来发送和接受数据,消息的类型可以是自定义,也可以是ros定义好的消息类型。
话题:最常见的消息通宵方式,发布着负责发,订阅着负责收,通过主节点讲订阅着节点直接连接到发布者节点。
使用rqt_graph可以查看节点直接的通信
Launch文件:可以同时启动多个节点,(否则一个一个节点占用一个终端),加载参数到参数服务器(充当配置文件作用)
使用launch文件一键启动
我们可以自己更改launch文件来做到一键启动。
vins_estimator中的launch文件中辅助一份euroc.launch 为one_start.launch
更改如下:#处为自加第一个为打开rviz 第二个为play bag文件
<launch>
<arg name="config_path" default = "$(find feature_tracker)/../config/euroc/euroc_config.yaml" />
<arg name="vins_path" default = "$(find feature_tracker)/../config/../" />
<include file="$(find vins_estimator)/launch/vins_rviz.launch"/>#自己加入
<node name="feature_tracker" pkg="feature_tracker" type="feature_tracker" output="log">
<param name="config_file" type="string" value="$(arg config_path)" />
<param name="vins_folder" type="string" value="$(arg vins_path)" />
</node>
<node name="vins_estimator" pkg="vins_estimator" type="vins_estimator" output="screen">
<param name="config_file" type="string" value="$(arg config_path)" />
<param name="vins_folder" type="string" value="$(arg vins_path)" />
</node>
<node name="pose_graph" pkg="pose_graph" type="pose_graph" output="screen">
<param name="config_file" type="string" value="$(arg config_path)" />
<param name="visualization_shift_x" type="int" value="0" />
<param name="visualization_shift_y" type="int" value="0" />
<param name="skip_cnt" type="int" value="0" />
<param name="skip_dis" type="double" value="0" />
</node>
<node pkg="rosbag" type="play" name="play" args="/home/hhb/dataset/EUROC/MH_05_difficult.bag" output="screen"/>#自己加入
</launch>