淦VINS-MONO源码 04--相机与IMU的外参标定

本文介绍了相机与IMU融合定位与建图中关键的外参标定过程,包括相对位姿与时间差的标定方法。探讨了在线与离线标定的区别,并详细解析了几种有效的标定算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相机与IMU外参标定

什么是相机与IMU外参?
足够准确的相机与IMU外参是实现相机与IMU融合的定位与建图的前提。相机与IMU之间的外参包括两部分:
1.相机与IMU之间的相对位姿
2.相机与IMU之间的时间差

相机与IMU之间的相对位姿

如下图所示,相机与IMU之间的相对位姿值的是相机坐标系和IMU坐标系之间的变换,包括相对旋转角和相对平移量。
在这里插入图片描述

相机与IMU之间的时间差

由于触发延时、传输延时的存在,传感器的采样时间和时间戳的时间不匹配,如下图所示,从而导致相机和IMU之间存在时间差td。
在这里插入图片描述

标定方法

相机与IMU之间的相对位姿

相机与IMU的标定方法很多,有在线和离线两种方式.其中通过Kalibr工具箱进行标定的方法属于离线标定,并且还依赖场景中的标定板,是很麻烦的一种标定方法.而在线标定方法操作简便,不需要特定的场景布置,直接多角度移动设备即可实现标定,因此是极力推崇的方法。

港科大沈劭劼实验室提出了在初始化的同时对相机与IMU之间的外参进行标定的方法。流程如下图所示。首先进行相机与IMU之间相对旋转角的标定,标定完成之后进行初始化和相机与IMU之间相对平移量的标定。标定和初始化完成后进行视觉惯性联合的状态估计,并且把标定量也当做待估计的状态放入联合优化中。此在线标定方法被应用于VINS中。

具体方法如下:
可以参考:VINS-Mono-相机与IMU外参标定原理及源码解析.
想要求解相机到IMU的旋转,那首先要构建约束,在一个SLAM系统中通过相机的两帧来构建约束。
如下图,红色路径的变换理论上等于绿色路径的变换,通过这两种方式可以构建包含相机到IMU的旋转变换的约束方程。
在这里插入图片描述
构建如下等式:
在这里插入图片描述
S为尺度因子
上式等价于:
在这里插入图片描述
在这里插入图片描述
上式可写成:
在这里插入图片描述
多个时刻的线性方程累计起来:
在这里插入图片描述
就能求解相对旋转。

相机与IMU之间的时间差

方法1 基于像素点匀速运动的时间差标定方法
原理为:假设在较短时间内相机从Ck匀速运动到Ck+1,特征点在像素平面上的投影也从[vk,uk]匀速运动至[vk+1,uk+1],像素匀速运动的速度为V。如下图所示。

在这里插入图片描述

通过平移像素坐标,将时间差作为优化变量加入投影误差的表达式中,如下面式子所示。

在这里插入图片描述

此投影误差项与IMU误差项和初始值误差项相加进行联合非线性优化。每一次优化结束后对时间差进行补偿,最终时间差的标定量逐渐趋于0。

方法2 将时间差变量加入IMU预积分表达式中
中的方法引入了像素点匀速运动的假设,不够精确。中科院自动化所的Jinxu Liu等提出的时间差的在线标定方法将时间差加入到IMU预积分表达式中,并且同样作为优化变量参与联合非线性优化。相比于中的方法在表达式上更加复杂,但是带来了更加快速和精确的标定结果。

<think>好的,用户想在Ubuntu系统上安装和配置VINS-Fusion。我需要根据提供的引用信息来整理步骤。首先,检查用户使用的Ubuntu版本,因为不同版本安装步骤可能有差异,比如ROS的安装。引用中提到了Ubuntu 20.04和18.04,可能需要分情况说明。 第一步应该是安装ROS。根据引用[1]和[3],Ubuntu 20.04需要安装ROS Noetic,而18.04安装Melodic。用户需要根据系统版本选择正确的ROS版本,并注意可能遇到的rosdep初始化错误,如引用[3]中提到的,可能需要手动处理或更换源。 接下来是安装依赖库,比如Eigen、Ceres Solver、OpenCV等。引用[4]提到安装Ceres 1.14.0和OpenCV 4.6.0,可能需要编译安装。需要注意版本兼容性,特别是OpenCV的版本是否VINS-Fusion兼容,可能需要特定版本或配置。 然后,下载和编译VINS-Fusion的代码。用户需要从GitHub克隆仓库,可能需要调整CMakeLists.txt中的依赖路径,尤其是如果自行安装了某些库的情况。编译过程中可能出现依赖缺失,需要确保所有必要的库都已正确安装。 此,可能还需要配置GPU支持,如引用[4]提到的VINS-Fusion-gpu,这需要CUDA和cuDNN的环境,需要检查用户的显卡驱动是否安装,CUDA版本是否匹配。 最后,测试安装是否成功,使用数据集运行VINS-Fusion,并检查是否有报错。可能需要指导用户如何下载数据集和运行不同的节点,比如单目、双目或融合GPS的数据。 用户可能遇到的问题包括ROS安装中的网络问题、依赖库版本冲突、编译错误等,需要提供常见问题的解决方法,比如替换rosdep的源,或者调整CMake文件中的路径。 另,需要提醒用户仔细遵循步骤,确保每个环节正确,尤其是环境变量和路径的设置,避免后续步骤出错。可能还需要提供一些考链接或进一步阅读材料,方便用户深入排查问题。</think>### 在Ubuntu系统中安装和配置VINS-Fusion的步骤 #### 1. **安装ROS(根据Ubuntu版本选择对应ROS版本)** - **Ubuntu 20.04**:安装ROS Noetic ```bash 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-noetic-desktop-full echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential sudo rosdep init rosdep update ``` - **注意**:若`sudo rosdep init`失败(如引用[3]所述),可手动下载`20-default.list`并放置到`/etc/ros/rosdep/sources.list.d/`目录下[^3]。 - **Ubuntu 18.04**:安装ROS Melodic(步骤类似,替换`noetic`为`melodic`)。 #### 2. **安装依赖库** - **Eigen3**: ```bash sudo apt install libeigen3-dev ``` - **Ceres Solver(需源码编译,推荐1.14.0)**: 根据引用[4],从源码安装Ceres 1.14.0[^4]: ```bash git clone https://github.com/ceres-solver/ceres-solver.git cd ceres-solver && git checkout 1.14.0 mkdir build && cd build cmake .. && make -j$(nproc) sudo make install ``` - **OpenCV(推荐4.6.0)**: 若系统自带OpenCV版本不兼容,需源码编译[^4]: ```bash git clone https://github.com/opencv/opencv.git cd opencv && git checkout 4.6.0 mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_CUDA=OFF .. make -j$(nproc) sudo make install ``` #### 3. **下载并编译VINS-Fusion** ```bash mkdir -p ~/vins_ws/src cd ~/vins_ws/src git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git cd .. && catkin_make ``` - **可能遇到的问题**: - 若提示`ceres`或`opencv`未找到,需在`CMakeLists.txt`中手动指定路径(如`set(Ceres_DIR /path/to/ceres)`)[^4]。 - 若编译报错,检查ROS环境变量是否生效(`source /opt/ros/<version>/setup.bash`)。 #### 4. **运行测试** - **示例数据集测试(单目+IMU)**: ```bash roslaunch vins vins_rviz.launch rosrun vins vins_node src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml rosbag play YOUR_DATASET.bag ``` - **双目相机测试**: 修改配置文件中相机数,替换为实际标定值。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值