【Ubuntu18.04 D435i RGB相机与IMU标定详细版(二)】

【Ubuntu18.04 D435i RGB相机与IMU标定详细版(二)】

继上篇文章


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


三、IMU标定(联合标定可跳过)

使用imu_utils标定

imu_utils是一个轻量级的 IMU 标定工具,主要用于校准 IMU 的偏差和尺度因子,配置和使用相对简单,适合快速标定需求。但不支持多传感器融合标定,只能单独标定 IMU,由于功能较为简单,标定结果的精度可能不如更专业的工具,通常与ros一起使用。主要在ubuntu18.04进行测试。

参考文章:https://blog.csdn.net/weixin_51612528/article/details/143445582

1.安装依赖项

imu_utils依赖于ceres,需要全局安装,首先安装依赖:

c 复制代码
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev libdw-dev

访问ceres-solver地址,选择tag为1.14.0下载tar或tar.gz压缩包,也可以使用指令下载:

c 复制代码
wget https://github.com/ceres-solver/ceres-solver/archive/refs/tags/1.14.0.tar.gz

解压并编译:

c 复制代码
# 可以选择在/opt目录下安装
tar -zxvf 1.14.0.tar.gz 
cd ceres-solver-1.14.0/
mkdir build
cd build/
------------------------------------
cmake ..
make -j4
sudo make install

imu_utils同样依赖code_utils,需要先编译:

c 复制代码
# 可以选择在/opt目录下安装
mkdir -p imu_calib_ws/src    # 创建工作空间

cd ./imu_calib_ws/src
git clone https://github.com/gaowenliang/code_utils.git

cd code_utils/src
vim sumpixel_test.cpp  # 将 #include "backward.hpp" 改为 #include "code_utils/backward.hpp" 避免报错

cd imu_calib_ws
catkin_make

下载并编译imu_utils:这里使用的是mintar大佬修改后的文件,gaowenliang的imu_utils貌似有单位的问题

c 复制代码
cd ./imu_calib_ws/src
git clone https://github.com/mintar/imu_utils.git
cd imu_calib_ws
catkin_make

这里以D435i为例,并在18.04上测试,也没有涉及到imu驱动以及相关串口的配置,后续如果有涉及会更新。一些其他问题可以参考博客。

imu_utils使用bag包对imu进行标定,在静止状态下启动相机并录制imu数据:

c 复制代码
# 启动驱动,修改频率(可选)
roslaunch realsense2_camera rs_camera.launch gyro_fps:=200 accel_fps:=200

# 录制imu数据,根据实际imu的话题名修改
rosbag record /camera/imu --duration=2.5h   # 这里一定要录制2个小时以上,不然会有问题,录制过程处于静止状态。

查看imu是否正确发布信息

c 复制代码
rostopic echo /camera/imu

正确

imu_ros包的大小

配置标定所需的信息:

c 复制代码
cd imu_utils/data && mkdir d435i  # 用于存放标定后的imu数据

# 创建launch文件
cd imu_utils/launch && touch d435i.launch  
gedit d435i.launch   # 打开创建的文件,粘贴以下内容,然后根据实际情况修改launch中的信息

<launch>
   <node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
      <!-- imu_topic 是 IMU 的话题 -->
      <param name="imu_topic" type="string" value="/camera/imu"/>   

      <!-- imu_name 是自定义的 IMU 名称 -->
      <param name="imu_name" type="string" value="d435i"/>    

      <!-- data_save_path 是标定后输出数据的目录 参考:$(find imu_utils)/data/d435i/ -->
      <param name="data_save_path" type="string" value="/home/fjl/Desktop/calib_data/camera_imu_calib/d435i/"/>     

      <!-- max_time_min 设置为最大时长,单位是分钟,默认值是 120 分钟 这个value值一定要小于你录制的imu数据包  设置的值如果大于实际包的长度,程序不会有效执行-->
      <param name="max_time_min" type="int" value="120"/>    

      <!-- max_cluster 设置最大聚类数 -->
      <param name="max_cluster" type="int" value="100"/>
   </node>
</launch>

标定imu:

c 复制代码
# 运行imu_utils标定程序
roslaunch imu_utils d435i.launch
 
# 播放录制好的数据包 以200倍速度播放(在数据文件夹下)

rosbag play -r 200 2025-10-17-22-03-49.bag

# 当bag包加速回放完毕后,执行launch的窗口仍然会显示wait for imu data.,等待一段时间计算,计算完毕后会显示计算结果

标定结束后,标定结果会保存在我们创建的d435i目录下,标定信息参考如下:

相关推荐
LabVIEW开发20 小时前
LabVIEW双目测距
数码相机·计算机视觉·labview·labview知识·labview功能·labview程序
双翌视觉2 天前
机器视觉的汽车中控屏FPC模切应用
数码相机·汽车
Chicheng_MA2 天前
算能 CV184 智能相机整体方案介绍
人工智能·数码相机·算能
Antonio9152 天前
【图像处理】rgb和srgb
图像处理·人工智能·数码相机
格林威2 天前
UV紫外相机的简单介绍和场景应用
人工智能·数码相机·计算机视觉·视觉检测·制造·uv·工业相机
Matlab仿真实验室2 天前
基于Matlab实现双目图计算深度图
开发语言·数码相机·matlab·双目图计算深度图
列兵阿甘2 天前
知微传感Dkam系列3D相机SDK例程篇:Python设置相机触发模式
python·数码相机·3d
格林威2 天前
短波红外相机的简单介绍和场景应用
人工智能·数码相机·计算机视觉·目标跟踪·视觉检测·工业相机·工业镜头
格林威2 天前
可见光工业相机半导体制造领域中的应用
图像处理·人工智能·数码相机·计算机视觉·视觉检测·制造·工业相机