0.参考资料
Kalibr进行IMU+相机的标定 : 这个步骤写的非常好,应该是目前看到的最符合的步骤了。
使用ROS功能包标定相机内参
1.步骤
-
标定相机内参 这个部分可以使用的工具很多,kalibr功能很全,可以单独标定相机内参、IMU零偏以及相机和IMU外参,所以可以使用kalibr来标定相机内参。 也可以使用其他工具来标定相机内参,比如ROS自带的相机标定工具包,或者自己采集图像使用MATLAB进行标定。 -
标定IMU零偏和随机游走 同理标定IMU也可以使用kalibr进行标定,还有其他工具,比较容易使用的就是港科大的imu_utils 。 -
使用1和2的结果,联合标定相机和IMU外参 这个就只能使用kalibr了,也就是后面主要的步骤
2.安装
官网安装教程:https://github.com/ethz-asl/kalibr/wiki/installation
注意官网的安装教程不是用catkin_make ,而是使用catkin build (注意中间没有_ ),catkin build 应该是catkin_make 的一个改进版本,好像是对于有多个ROS功能包的工程进行编译互不影响,而catkin_make 则是一起编译,会污染工作空间。(不一定对,具体可以再查一下)
所以下面的安装步骤就严格按照官网安装步骤来进行,我尝试过使用catkin_make 命令直接编译,也可以编译成功,但是最后进行标定的时候求解非线性优化一直卡在第一次优化的地方不动,不知道什么原因,所以最好还是按照官网的步骤来安装吧。
下面以Ubuntu 18.04 为例:
- 确保电脑上已经安装了ROS-melodic
- 在当前窗口导出ROS版本环境变量,并且安装
catkin-tools ,不安装这个是没有catkin build 命令的
export ROS1_DISTRO=melodic
sudo apt-get install python-catkin-tools
- 安装编译和运行依赖库(注意下面
\ 不用删除,终端会自动识别)
sudo apt-get install -y \
git wget autoconf automake nano \
libeigen3-dev libboost-all-dev libsuitesparse-dev \
doxygen libopencv-dev \
libpoco-dev libtbb-dev libblas-dev liblapack-dev libv4l-dev
此外还要安装不同版本的Python 依赖
sudo apt-get install -y python3-dev python-pip python-scipy \
python-matplotlib ipython python-wxgtk4.0 python-tk python-igraph
- 创建工作空间,注意这个地方很重要,官网教程写了,这个地方一定要配置成
Release 模式,否则优化会很慢。所以可能之前自己测试的用catkin_make 编译优化卡住可能就是没有设置成Release 模式。
mkdir -p ~/kalibr_workspace/src
cd ~/kalibr_workspace
export ROS1_DISTRO=melodic
source /opt/ros/$ROS1_DISTRO/setup.bash
catkin init
catkin config --extend /opt/ros/$ROS1_DISTRO
catkin config --merge-devel
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
- 下载工程并编译
cd ~/kalibr_workspace/src
git clone https://github.com/ethz-asl/kalibr.git
cd ~/kalibr_workspace/
catkin build -DCMAKE_BUILD_TYPE=Release -j4
最后编译成功截图如下,可以看到catkin build 编译的输出配色更丰富,比原来的catkin_make 更好看,科技在进步啊!
3.官网IMU和camera外参标定
3.1.标定步骤
官网教程:https://github.com/ethz-asl/kalibr/wiki/camera-imu-calibration
The tool must be provided with the following input:
- –bag filename.bag
ROS bag containing the image and IMU data - –cam camchain.yaml
intrinsic and extrinsic calibration parameters of the camera system. The output of the multiple-camera-calibration tool can be used here. (see YAML formats) - –imu imu.yaml
contains the IMU statistics and the IMU’s topic (see YAML formats) - –target target.yaml
the calibration target configuration (see Cailbration targets)
The calibration can be run using:
kalibr_calibrate_imu_camera --bag [filename.bag] --cam [camchain.yaml] --imu [imu.yaml] --target [target.yaml]
总结就是运行标定的程序,需要提供四个文件,分别是ros bag包、相机内参文件、IMU零偏和随机游走文件、标定板的参数文件。
注意:但是上面有一个问题并不能直接运行kalibr_calibrate_imu_camera 这个可执行文件,而且我在devel 下也没有找到bin 目录。所以最后还是用rosrun 命令来运行这个节点吧,这里也比较奇怪,刷新了环境变量之后,还是不能用tab 键进行补全,只能自己全部打上,例如官网提供的这个IMU和camera标定的实例:
rosrun kalibr kalibr_calibrate_imu_camera --bag imu_april.bag --cam cam_april-camchain.yaml --imu imu_adis16448.yaml --target april_6x6_80x80cm.yaml
3.2.标定结果分析
https://codeantenna.com/a/45xdYtWupm
https://blog.csdn.net/sinat_36502563/article/details/103053292
https://guyuehome.com/34592
https://www.youtube.com/watch?app=desktop&v=puNXsnrYWTY
|