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),解压后应包含
运行与验证
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)。若使用其他数据集,需同步修改此文件中的话题名称和相机内参。