完整版用kalibr标定 camera imu

2:相机标定
2.1:去github https://github.com/slightech/MYNT-EYE-SDK 下载小觅SDK安装 opencv的版本和SDK一定要对应,否则不成功
(因为我没有找到修改SDK源码的CMakeLists)
依据SDK中的/home/shenying/mynteye-1.8-linux-x64-gcc5-opencv-3.4.0/doc/api/mynteye-apidoc-1.8.pdf去安装
步骤为:
Prerequisites
# Install build tools
$ sudo apt-get install build-essential cmake git
# Install OpenCV dependencies
$ sudo apt-get install pkg-config libgtk2.0-dev
# Install ssl for https, v4l for video
$ sudo apt-get install libssl-dev libv4l-dev v4l-utils
Install OpenCV 3.4
$ git clone https://github.com/opencv/opencv.git
$ cd opencv/
$ git checkout tags/3.4.0
$ mkdir build
$ cd build/
$ cmake \
-DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=/usr/local \
\
-DWITH_CUDA=OFF \
\
-DBUILD_DOCS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \
..
$ make -j4
$ sudo make install
Install CUDA (Optional)
If you have Nvidia's graphic card, you could enable GPU compute capability as follows:
  • Ensure your graphic card drivers are up to date.
  • Download and install correct version of CUDA Toolkit according to here.
Install SDK
Go to the SDK directory and edit  sdk.cfg  to set your OpenCV install directory etc., then install:
$ cd <sdk directory>
$ ./install.sh
$ source ~/.bashrc
Check Installation
After  ./install.sh , you could check the environment variables:
$ echo $MYNTEYE_SDK_ROOT
<Should be the sdk path>
Build SDK Samples
$ cd samples/
$ mkdir build
$ cd build/
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make
Then you could run the sample like this:
$ ./samples/bin/camera [name]
Please see "samples/README.md" to learn more about the samples.
测试成功后,安装MYNT-EYE-OKVIS-Sample 依据github https://github.com/slightech/MYNT-EYE-OKVIS-Sample去安装
成功后 根据 /home/shenying/MYNT-EYE-OKVIS-Sample/cameraimu_calibration_guidebook.md 指导书去安装 kalibr
2.2 一般推荐源码安装kalibr https://github.com/ethz-asl/kalibr/wiki/installation
B) Building from source
To build the toolbox from source follow these steps (tested on Ubuntu 14.04 with ROS indigo):

Install ROS indigo
see ros.org for more information

Example installation on Ubuntu 16.04 and ROS kinetic:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list'


wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get install ros-kinetic-desktop python-rosinstall python-rosdep -y
rosdep init
rosdep update
Install the build and run dependencies:
依赖库一定得安,否则后期会出现各种错误;
sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-kinetic-vision-opencv ros-kinetic-image-transport-plugins ros-kinetic-cmake-modules python-software-properties software-properties-common libpoco-dev python-matplotlib python-scipy python-git python-pip ipython libtbb-dev libblas-dev liblapack-dev python-catkin-tools libv4l-dev

sudo pip install python-igraph --upgrade

Create a catkin workspace

mkdir -p ~/kalibr_workspace/src
cd ~/kalibr_workspace
source /opt/ros/kinetic/setup.bash
catkin init
catkin config --extend /opt/ros/kinetic
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release

Clone the source repo into your catkin workspace src folder

cd ~/kalibr_workspace/src
git clone https://github.com/ethz-asl/Kalibr.git

Build the code using the Release configuration. depending on the available memory, you might need to reduce the build threads (e.g. add -j2 to catkin_make)

cd ~/kalibr_workspace
catkin build -DCMAKE_BUILD_TYPE=Release -j4

Grab a coffee, this will take a while...

Once the build is finished you have to source the catkin workspace setup to use Kalibr

source ~/kalibr_workspace/devel/setup.bash

More information on building with catkin and ROS can be found here.
kalibr 安装成功!
2.3 下面开始标定,用mynt-eye-okvis-sample/build 下okvis_app_getcameracalibdataset获得pic
用okvis_app_getcameraimucalibdataset获得 pic 和imu数据 然后打包成 bag包
坑1: ImportError: No module named sm
sudo apt install sm 不行
pip install sm 可以
坑2: ImportError: cannot import name PlotCollection 这个错误纠结了我近一天,感觉还是sm模块里的东西出现错误
重新卸载安装了几次依然无用,然后安装 install pip matplotlib 后出现了新的错误;
坑3:ImportError: cannot import name NavigationToolbar2Wx 然后找来专门写python的人 找下 发现 matplotlib 中没有NavigationToolbar2Wx 而是换成了NavigationToolbar2WxAgg 所以修改源码 还害怕下面用了该库中的函数,先试试
结果通过,可能是该库随着时间更新了,老版本不用了。
坑4: ImportError: No module named kalibr_common 每次出现这种情况都是没有source文件
解: source ~/kalibr_workspace/devel/setup.bash
最后:运用/home/shenying/MYNT-EYE-OKVIS-Sample/cameraimu_calibration_guidebook.md 指导书去标定
2.4如何正确解读标定结果:(费了九牛二虎之力好不容易 出来结果了,如果不会看结果就.......)
a:为什么要进行标定?
相机:为了要计算相机的内参外参数 ( 支持相机模型: pinhole, omin; 支持畸变模型:radtan, equi, fov
内参:焦距,光心 (fx,fy,cx,cy)
畸变(径向、离心、薄棱径)参数(纠正): (k1, p1, p2, s1, s2)
径向畸变:

偏离心畸变:

薄棱径畸变:非常小,一般不考虑。
b:如果不标定会出现什么情况?
相机镜头拧会影响内参,无法运用,比如orb跟丢(一种可能)
c:如何评价结果好坏?
取巧的方法:和所标期间
相机重投影误差控制在几个像素内,imu标定零偏,零漂。
<think>嗯,用户想了解如何使用Kalibr进行RGBD相机与IMU的联合标定。首先,我需要回忆一下Kalibr的基本用法和相关文档。记得Kalibr是ETH Zurich开发的一个标定工具,主要用于多传感器标定,比如相机、IMU和轮速计等。用户提到的RGBD相机和IMU的联合标定,可能涉及到时间同步和空间标定。 首先,用户可能需要准备标定板。根据引用[3],Kalibr支持Aprilgrid、Checkerboard和Circlegrid三种标定板,用户需要下载对应的PDF并打印。这点很重要,因为标定板的选择会影响标定结果,特别是Aprilgrid可能有更好的检测鲁棒性。 接下来,安装Kalibr。通常是通过ROS来安装,可能需要添加相应的源或者从源码编译。不过用户可能需要先确认自己的ROS版本是否兼容,比如Melodic或Noetic。安装步骤可能需要参考官方文档,或者使用apt-get安装ROS包。 然后,数据采集部分。用户需要同时录制RGBD相机的图像和IMU的数据。这里需要注意的是时间同步的问题,因为相机和IMU的时间戳必须对齐。通常建议使用硬件同步,或者确保软件时间戳的准确性。此外,移动标定板的方式也很重要,需要覆盖所有运动轴,尤其是IMU的激励,比如各个方向的旋转和平移,以获取充分的动态信息。 标定过程中,可能需要使用Kalibr的工具来检查数据质量,比如kalibr_checkerboard_dataset或者kalibr_imu_camera_check。这些工具可以帮助用户确认数据是否适合标定,比如IMU是否有足够的运动激励,图像中的标定板是否被正确检测到。 标定命令方面,用户需要使用kalibr_calibrate_imu_camera工具,并指定相应的参数文件,比如IMU的配置文件、相机的标定文件(如YAML格式),以及bag文件。这里需要注意的是,RGBD相机的标定可能需要特别处理,因为通常Kalibr是针对单目或双目相机的,但RGBD可能可以当作带有深度信息的单目来处理。可能需要确认Kalibr是否直接支持RGBD,或者需要将深度信息与其他数据结合使用。 标定完成后,用户需要验证结果,比如重投影误差和IMU参数是否合理。如果误差较大,可能需要重新采集数据或调整参数。此外,引用[1]中提到ORBSLAM3使用Kalibr进行标定,用户可能需要将标定结果应用到SLAM系统中,这时候需要确保标定文件的格式兼容性。 用户可能遇到的问题包括数据同步不好导致标定失败,或者标定板检测不稳定。这时候建议检查时间戳同步,或者尝试不同的标定板类型。此外,IMU的噪声参数设置也可能影响标定结果,需要根据实际传感器的规格进行配置。 最后,用户可能需要参考Kalibr的官方文档和Wiki,以及相关的论文,如引用[2]中的Real-Time Visual Odometry,来深入理解标定的原理和最佳实践。如果有具体的错误信息,可能需要查阅社区或GitHub的issue来寻找解决方案。</think>### 使用Kalibr进行RGBD相机与IMU联合标定的步骤 #### 1. **准备工作** - **标定板选择**:使用Kalibr支持的标定板(如Aprilgrid、Checkerboard或Circlegrid),需下载并打印PDF文件[^3]。 - **传感器安装**:确保RGBD相机与IMU刚性固定,且时间戳同步(硬件同步或软件同步)。 - **安装Kalibr**:通过ROS安装Kalibr包,或从源码编译: ```bash sudo apt-get install ros-<distro>-kalibr ``` #### 2. **数据采集** - **录制ROS Bag**: - 缓慢移动传感器组合,覆盖所有运动轴(平移、旋转)。 - 确保标定板在RGBD相机的视野内,且IMU受到充分激励(避免静止状态)[^1]。 - 录制命令示例: ```bash rosbag record /rgb/image_raw /depth/image_raw /imu/data -O calibration.bag ``` #### 3. **配置文件准备** - **相机标定文件**(如`camchain.yaml`): ```yaml cam0: camera_model: pinhole intrinsics: [fx, fy, cx, cy] distortion_coeffs: [k1, k2, p1, p2] ``` - **IMU噪声参数文件**(如`imu.yaml`): ```yaml rate: 200 # IMU采样频率 accelerometer_noise_density: 0.01 # 噪声密度 gyroscope_noise_density: 0.005 ``` #### 4. **执行联合标定** ```bash kalibr_calibrate_imu_camera \ --target aprilgrid.yaml \ # 标定板参数 --cam camchain.yaml \ # 相机参数 --imu imu.yaml \ # IMU参数 --bag calibration.bag \ # 数据文件 --time-calibration # 时间偏移校准 ``` #### 5. **结果验证** - 检查输出文件`camchain-imucam.yaml`中的重投影误差(一般需小于0.5像素)。 - 验证IMU与相机的时空参数(如时间延迟、相对位姿)。 --- ###
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值