关于传感器标定(imu标定,camera标定,camera-imu联合标定)

本文介绍使用ORB-SLAM3进行传感器标定的过程,包括IMU和相机标定的方法及注意事项,提供具体步骤与实例。

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

博主最近在帮同门做实验。关于传感器这些标定也是初次接触,使用orb-slam3代码包。其中涉及一些传感器标定,这里就把我用的东西汇总一下。

目录

1.imu标定

1.1 使用imu_utlies标定

1.1.1安装步骤:

1.1.2使用方法 

1.2使用kalibr标定

2.camera标定

3.camera-imu标定


1.imu标定

1.1 使用imu_utlies标定

话说在前面,需要注意的是,这里分为两部分,imu_utils和code_utils。需要在catkin_workspace中先 caktin_make  code_utils后,再将imu_utils的包移入再一起catkin_make。

这里放地址如下:

 code_utils:  GitHub - gaowenliang/code_utils: my code utilsmy code utils. Contribute to gaowenliang/code_utils development by creating an account on GitHub.https://github.com/gaowenliang/code_utils

 imu_utils:   GitHub - gaowenliang/imu_utils: A ROS package tool to analyze the IMU performance.A ROS package tool to analyze the IMU performance. - GitHub - gaowenliang/imu_utils: A ROS package tool to analyze the IMU performance.https://github.com/gaowenliang/imu_utils下载代码包:

git clone https://github.com/gaowenliang/code_utils.git
git clone https://github.com/gaowenliang/imu_utils.git 

1.1.1安装步骤:

1. 安装依赖项 

sudo apt-get install libdw-dev

2. 安装cere-solver

 

我们在imu_utils中的CMakeLists.txt中看到这里需要的环境,所以安装cere-solver

其实不是一定建议装最新的2.x版本。我的是ubuntu18.04 ,这里cere-solver的版本常常需要和Eigen3的版本对应.我这里Eigen3.3.4对应的cere-solver应该装1.14.0,否则在最终imu_utils编译catkin_make的时候会一大片编译错误,这时大概率要重装cere版本,我已经踩过坑了。

3. 一些编译错误的修正

(1) 编译code_utils会出现的错误

   1- 编译报错:code_utils-master/src/sumpixel_test.cpp:2:24: fatal error: backward.hpp:No such file or directory
解决方案: 在code_utils下面找到sumpixel_test.cpp,修改#include "backward.hpp"为 #include “code_utils/backward.hpp”,再编译。

    2- 由于opencv4版本导致的编译错误

解决方案:其实就是不同版本opencv代码格式的修正

Update code to OpenCV 4 by mintar · Pull Request #15 · gaowenliang/code_utils · GitHub

(2)最后编译imu_utils出现一个问题  "build error on std::ofstream out_t"

解决方案: 缺头文件https://github.com/gaowenliang/imu_utils/pull/38/files#diff-37a67ff78eb7260214b323353263b9af40a2fa98719a1e81937fae0159df87a3

1.1.2使用方法 

主要是3个方面:

1.录imu的rosbag

一般说让imu静置两个小时,我自己觉得一个小时顶多了。

2.在 catkin_workspace/ src / imu_utils/launch路径中添加一个launch文件(比如imu.launch)

<launch>
    <node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
                                                 <!--这里输入rosbag中的topic-->
        <param name="imu_topic" type="string" value= "/djiros/imu"/> 
                                                 <!--这里输入名字,随便写-->
        <param name="imu_name" type="string" value= "A3"/>
                                                   <!--路径根据自己的写,参考就是以imu_utils为基准-->
        <param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/>
        <param name="max_time_min" type="int" value= "120"/><!--前面录制的rosbag的时常-->
        <param name="max_cluster" type="int" value= "100"/><!--话题的频率-->
    </node>
</launch>

我们最终要获取的文件数据主要是如下格式,千万注意 单位,尤其是加速度的单位g和m/s2

%YAML:1.0
---
type: IMU
name: xxxx
Gyr:
   unit: " rad/s"
   avg-axis:
      gyr_n: 2.8863420507420113e-04
      gyr_w: 1.1459110507032453e-05
   x-axis:
      gyr_n: 3.2930571149111798e-04
      gyr_w: 1.0789910393933457e-05
   y-axis:
      gyr_n: 3.2221204736715821e-04
      gyr_w: 1.8262850703709627e-05
   z-axis:
      gyr_n: 2.1438485636432713e-04
      gyr_w: 5.3245704234542729e-06
Acc:
   unit: " m/s^2"
   avg-axis:
      acc_n: 1.6939167703267824e-02
      acc_w: 4.7410057431232906e-04
   x-axis:
      acc_n: 1.4495200684325752e-02
      acc_w: 6.5371145813888573e-04
   y-axis:
      acc_n: 1.4674141432773454e-02
      acc_w: 2.7511904157022989e-04
   z-axis:
      acc_n: 2.1648160992704262e-02
      acc_w: 4.9347122322787151e-04

3. 运行

roslaunch imu_utils imu.launch
rosbag play -r 200 imu.bag

1.2使用kalibr标定

我没有用这种方法,只是在使用camera标定的时候看到这个方案。

这里,有详细说明如何使用,供君参考:

https://github.com/ethz-asl/kalibr/wiki/Multi-IMU-and-IMU-intrinsic-calibration

未完,待续.. 

2.camera标定

3.camera-imu标定

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值