【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目录下,标定信息参考如下:

相关推荐
轻口味1 天前
HarmonyOS 6 轻相机应用开发5:实时自动戴眼镜功能实现
数码相机·华为·harmonyos
YANQ6621 天前
3.gemini336相机在ubuntu22.04的ros2下运行
数码相机
山楂树の2 天前
原生 WebGL + Canvas 实现鱼眼图像去畸变(Shader逐像素计算)
图像处理·数码相机·学习·程序人生
蓉蓉的数码视界2 天前
【无标题】
数码相机
科研前沿2 天前
镜像视界浙江科技有限公司的核心引擎关键技术有哪些?
人工智能·数码相机·计算机视觉
ZPC82102 天前
工业机器人视觉引导焊缝定位
数码相机
ZPC82102 天前
手眼标定原理
数据库·数码相机·postgresql
zhihuishuxia__3 天前
Multiplex通讯(多路复用通讯)
网络·图像处理·数码相机·计算机视觉·自动化
不懒不懒3 天前
【基于 PyQt5 + PaddleOCR 的工业视觉型号检测系统开发】
数码相机
steven_yzx3 天前
自动驾驶相机坐标系转换
人工智能·数码相机·自动驾驶