自动驾驶多传感器联合标定系列之IMU到车体坐标系的标定工程 , 本商品在已知GNSS/GPS到车体坐标系的外参前提下,根据GNSS/GPS的定位信息与IMU信息完成IMU到GNSS/GPS 的外参标定,并进一步获得IMU到车体坐标系的外参标定 本商品提供两种标定模式:车辆直线运动及自由运动,这两种模式下的注释工程

一、工程环境基础

本工程的运行与编译依赖Ubuntu操作系统,所有操作均需在Ubuntu环境下执行,核心依赖包括第三方库安装、基础编译工具配置,最终实现IMU(惯性测量单元)到车体坐标系的标定功能。工程的核心产出是可执行文件与标定结果文件,通过指定算法类型和数据路径完成标定任务。

二、基础工具安装(编译前准备)

在安装第三方库前,需先配置Ubuntu环境的基础编译与操作工具,包括vim(文本编辑工具)、cmake(编译构建工具)、git(代码版本管理工具)、gcc/g++(C/C++编译器),具体安装指令如下:

  1. 安装vimcmake
    bash
    sudo apt-get install vim cmake

    - vim用于后续可能的代码编辑或配置文件修改;
    - cmake是工程编译的核心工具,负责生成Makefile,支撑后续编译流程。
  2. 安装git
    bash
    sudo apt-get install git

    - 用于拉取工程代码(若工程代码通过Git仓库管理),或后续版本控制操作。
  3. 安装gccg++
    bash
    sudo apt-get install gcc g++

    - 作为C/C++语言的编译器,是工程源码编译为可执行文件的核心依赖,需确保版本兼容性(推荐GCC 7.0及以上)。

三、第三方库安装(工程核心依赖)

工程运行依赖BoostEigen3.3.7PCL三类第三方库,三者分别提供数值计算、矩阵运算、点云处理能力,是IMU到车体标定算法的基础支撑,具体安装步骤如下:

3.1 Boost库安装

Boost库是C++通用库,提供容器、算法、多线程等基础功能,工程采用指令直接安装方式,操作简单且兼容性强:

sudo apt install libboost-all-dev
  • 安装后无需额外配置路径,系统会自动将库文件与头文件放入默认搜索路径(如/usr/lib/usr/include),编译时可直接调用。

3.2 Eigen3.3.7库安装(推荐源码安装)

Eigen是线性代数库,核心用于矩阵运算、向量计算,是标定算法中姿态解算、误差计算的关键依赖,需通过源码安装确保版本为3.3.7(版本兼容性对算法精度至关重要):

  1. 解压缩安装包:将下载的Eigen3.3.7源码压缩包(如eigen-git-mirror.tar.gz)解压至任意目录,得到源码文件夹eigen-git-mirror
  2. 编译与安装:进入源码目录,通过cmake生成编译文件,执行安装指令:
    bash
    cd eigen-git-mirror # 进入源码根目录
    mkdir build # 创建编译目录(避免污染源码)
    cd build # 进入编译目录
    cmake .. # 生成Makefile,..表示上级目录(源码根目录)
    sudo make install # 执行安装,将头文件与库文件安装到系统默认路径
  3. 头文件移动(关键步骤):Eigen安装后,头文件默认路径为/usr/local/include/eigen3/,但工程编译时需从/usr/local/include/直接引用,因此需执行移动指令:
    bash
    sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include

    - -r参数表示递归复制,确保Eigen目录下所有头文件完整迁移,避免编译时出现“头文件找不到”的错误。

3.3 PCL库安装

PCL(点云库)提供点云处理、几何计算能力,支撑标定过程中数据预处理与特征提取,工程推荐参考指定博客完成安装,确保版本适配与功能完整性:

四、Imu2Car工程编译(生成可执行文件)

完成基础工具与第三方库安装后,进入Imu2Car工程源码目录,通过cmakemake指令编译工程,最终生成可执行文件,具体步骤如下:

  1. 进入工程目录:假设工程源码文件夹名为Imu2Car,通过cd指令进入:
    bash
    cd Imu2Car
  2. 创建编译目录:为避免编译文件污染源码目录,创建build子目录:
    bash
    mkdir build
  3. 进入编译目录
    bash
    cd build
  4. 生成Makefile:通过cmake解析工程根目录的CMakeLists.txt(工程编译配置文件),生成Makefile:
    bash
    cmake ..

    - 若执行过程中提示“找不到Boost/Eigen/PCL库”,需检查对应库的安装路径是否正确,或通过cmake -DCMAKEINCLUDEPATHcmake -DCMAKELIBRARYPATH指定库路径。
  5. 执行编译:通过make -j指令多线程编译(-j后可加数字指定线程数,如make -j4表示4线程编译,速度更快):
    bash
    make -j
  6. 编译结果:编译成功后,工程根目录的bin文件夹中会生成可执行文件runimuheading——该文件是Imu2Car工程的核心执行入口,用于后续标定任务。

五、Imu2Car工程运行(执行标定任务)

5.1 运行指令格式

进入Imu2Car工程根目录,通过./bin/runimuheading调用可执行文件,指令需传入两个核心参数:算法类型id离线数据文件夹路径,格式如下:

cd Imu2Car  # 进入工程根目录(必须在此目录执行,确保路径正确)
./bin/run_imu_heading 算法类型id 离线录制好的数据文件夹路径

5.2 关键参数说明

5.2.1 算法类型id(仅两种可选)

工程仅支持两种标定算法,通过id区分,核心差异在于可标定的角度误差维度:

  • id=1:直线矫正:仅能标定IMU与车体坐标系之间的yaw偏航角误差,适用于车辆可稳定直线行驶、仅需修正航向偏差的场景;
  • id=2:自由运动矫正:可同时标定roll翻滚角、pitch俯仰角、yaw偏航角三个角度的误差,适用于车辆运动轨迹复杂(如包含转向、坡道行驶)、需全面修正姿态偏差的场景。
5.2.2 离线数据文件夹路径

需传入存储“离线录制好的标定数据”的文件夹路径(相对路径或绝对路径均可),数据需满足工程预设的格式要求(如包含IMU原始数据、车体运动数据等,具体格式需参考工程文档,当前文件未明确,暂以“离线录制好的数据”为准)。

5.3 运行示例

假设离线数据存储在工程根目录的data文件夹中,若需执行“自由运动矫正”(算法类型id=2),指令如下:

cd Imu2Car
./bin/run_imu_heading 2 ./data
  • 若需执行“直线矫正”(算法类型id=1),指令如下:
cd Imu2Car
./bin/run_imu_heading 1 ./data

5.4 运行结果输出

运行成功后,工程会在“离线数据文件夹路径”下的calibration子文件夹中,生成标定结果文件imu_heading.csv——该文件是标定任务的核心产出,包含IMU与车体坐标系之间各角度的误差数据,可通过文本编辑器(如vim、Excel)打开查看,直接获取roll、pitch、yaw角度的偏差值(具体字段格式当前文件未明确,以实际生成的CSV内容为准)。

六、核心功能总结

Imu2Car工程的核心目标是实现IMU到车体坐标系的角度误差标定,通过“安装依赖→编译工程→执行标定”的流程,最终输出角度误差结果。工程的核心特点的是:

  1. 依赖明确:严格依赖Ubuntu系统与Boost/Eigen3.3.7/PCL库,需按步骤安装确保兼容性;
  2. 算法可选:提供两种标定算法,分别适配“直线行驶”与“自由运动”场景,覆盖不同标定需求;
  3. 结果直观:标定结果以CSV文件形式输出,便于后续分析与使用,无复杂结果解析成本。

自动驾驶多传感器联合标定系列之IMU到车体坐标系的标定工程 , 本商品在已知GNSS/GPS到车体坐标系的外参前提下,根据GNSS/GPS的定位信息与IMU信息完成IMU到GNSS/GPS 的外参标定,并进一步获得IMU到车体坐标系的外参标定 本商品提供两种标定模式:车辆直线运动及自由运动,这两种模式下的注释工程

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐