1. VINS系统环境搭建与数据集运行

任务目标

在Ubuntu 18.04/20.04系统上从零搭建VINS-Mono运行环境,完成EuRoC数据集的实际运行,最终在Rviz中看到无人机轨迹与稀疏点云地图。本案例覆盖:ROS安装、VINS-Mono依赖配置、源码编译、数据集下载与播放、结果验证。

环境与依赖

  • 操作系统:Ubuntu 18.04(ROS Melodic)或 Ubuntu 20.04(ROS Noetic)
  • ROS:完整版(ros-melodic-desktop-full 或 ros-noetic-desktop-full)
  • 依赖库:Ceres Solver 1.14.0(必须使用此版本,新版API不兼容)、OpenCV 3.3.1(Ubuntu 18.04自带)、Eigen 3.3.3+
  • 编译工具:catkin_make

安装步骤

1. 安装ROS

以Ubuntu 18.04 + Melodic为例(20.04将melodic替换为noetic即可):

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
sudo apt install ros-melodic-desktop-full
sudo rosdep init
rosdep update
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

2. 安装Ceres Solver 1.14.0

sudo apt install libgoogle-glog-dev libgflags-dev libatlas-base-dev libsuitesparse-dev
cd ~/Downloads
wget http://ceres-solver.org/ceres-solver-1.14.0.tar.gz
tar zxf ceres-solver-1.14.0.tar.gz
cd ceres-solver-1.14.0
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
sudo make install

3. 创建ROS工作空间并编译VINS-Mono

mkdir -p ~/vins_ws/src
cd ~/vins_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git
cd ~/vins_ws
catkin_make
echo "source ~/vins_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

编译过程约需5-10分钟,若出现OpenCV版本冲突,检查是否安装了多个OpenCV版本。

4. 下载EuRoC数据集

从EuRoC官网下载MH_01_easy数据集(约1.5GB),解压后应包含mav0文件夹,内部有cam0、cam1、imu0、leica0等子目录。

运行与验证

1. 启动VINS-Mono(三个终端)

终端1——启动roscore:

roscore

终端2——启动VINS-Mono估计节点:

cd ~/vins_ws
source devel/setup.bash
roslaunch vins_estimator euroc.launch

终端3——启动Rviz可视化:

cd ~/vins_ws
source devel/setup.bash
roslaunch vins_estimator vins_rviz.launch

2. 播放数据集

终端4——进入数据集目录并播放:

cd ~/Downloads/MH_01_easy/mav0
rosbag play MH_01_easy.bag

3. 通过条件

  • Rviz中显示相机轨迹(绿色路径)从起点逐渐延伸,无中断跳变
  • 地图窗口出现稀疏特征点云(彩色点),随飞行持续更新
  • 终端2输出pose信息,包含位置与四元数,数值连续变化
  • 数据集播放结束后,轨迹完整覆盖飞行路径,无漂移发散

常见问题

  • Ceres编译报错:确认安装的是1.14.0而非2.x版本,2.x的LocalParameterization已被移除
  • 找不到euroc.launch:检查是否已执行source ~/vins_ws/devel/setup.bash
  • Rviz无数据:确认四个终端的顺序,先启动估计节点再播放bag;检查话题/vins_estimator/odometry是否有输出
  • 编译内存不足:使用catkin_make -j2降低并行度

关键配置说明

VINS-Mono的参数文件位于~/vins_ws/src/VINS-Mono/config/euroc/euroc_config.yaml,其中imu_topic和image_topic需与数据集话题名一致(EuRoC默认分别为/imu0和/cam0/image_raw)。若使用其他数据集,需同步修改此文件中的话题名称和相机内参。