我发现这里所给的标定板也是这个
https://drive.google.com/file/d/0B0T1sizOvRsUdjFJem9mQXdiMTQ/edit?resourcekey=0-0Cn7Pkf1xyNGurAnRJH3aA
![](https://img-blog.csdnimg.cn/20210722103658697.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzE2NjQzMjIz,size_16,color_FFFFFF,t_70)
而且这个标定板左下角有标明尺寸
![](https://img-blog.csdnimg.cn/20210722104447417.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpbmF0XzE2NjQzMjIz,size_16,color_FFFFFF,t_70)
转载自:https://zhuanlan.zhihu.com/p/44424457
萌新谈相机与IMU的标定
![熊勒个猫](https://img-blog.csdnimg.cn/img_convert/862bd9bed80ba971cdf75ea820d5d7ad.png)
熊勒个猫
社会太复杂了,我还是喜欢熊猫比较安全
本文主要包括相机标定和imu_camera 标定,另附上imu标定文章(非本人)。
先从摄像头的标定开始讲起吧,SLAM新手上路,第一个要玩的肯定是ORBSLAM,光跑数据肯定不够过瘾啊,所以就要用自己的摄像头转一圈。下面进入正题,
前提条件:一个笔记本,一个能用摄像头(单目或者双目)
1.相机标定--opencv
camera_calibration - ROS Wiki
wiki.ros.org
其实wiki上已经介绍的够清楚的了,先下载image_pipeline的源码,然后下载一张棋盘纸
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/my_camera/image camera:=/my_camera
size 是指棋盘内部角点个数,我是用的标定板公有8x6个角点(即8列6行),square指方形的边长,image为输出图像的话题,camera为相机的名称(即在/image_raw前面部分)。比如我的无人机是ardrone2.0.运行起来应该是
rosrun cameracalibration cameracalibrator.py --size 8x6 --square 0.108 image:=/ardrone/front/image_rawosrun cameracalibration cameracalibrator.py --size 8x6 --square 0.108 image:=/ardrone/front/image_raw
但是再此之前别忘了检查一下你的topic名字,可以输入
rostopic list
对于的我的无人机来说,还需要运行一个驱动launch文件
roslaunch ardrone_autonomy ardrone.launch
![](https://img-blog.csdnimg.cn/img_convert/0558ed07de88c2c2912b0c43798b35be.png)
然后你可以看到这个东西,
![](https://img-blog.csdnimg.cn/img_convert/c1aba950ca376d7436b8220f1a09d294.png)
步骤就是左三圈右三圈,上三圈下三圈,换个姿势再来几圈.........
当标定完成的时候,那个calibrate 按钮会变蓝,然后你可以点击保存和commit。这样就会生成一个yaml文件。最后标定就完成啦!
二.相机标定--matlab
关于如何用matlab标定我就不赘述了,因为我自己没有亲自操作过,这里附上几篇文章,仅供参考
MATLAB标定工具箱的使用 - CSDN博客blog.csdn.net![图标](https://img-blog.csdnimg.cn/img_convert/8f014be76f9a67a97038ff1144d0e75e.png)
三.相机与imu标定
这里用到的是大名鼎鼎ethz 开发的kalibr
https://github.com/ethz-asl/kalibrgithub.com
这个kalibr有两个版本,一个是比较全的版本,但是里面包比较多,一开始尝试去编译这个,结果电脑不争气,编译一直卡死。所以后来我就用这个CDE版本。
ethz-asl/kalibrgithub.com
关于如何使用这个版本,下面这个链接里面的视频已经讲的很清楚了。(需要代理)
https://www.youtube.com/watch?v=puNXsnrYWTY&app=desktopwww.youtube.com
我把主要的命令写一下,方便大家复制。
标定纸:https://drive.google.com/file/d/0B0T1sizOvRsUdjFJem9mQXdiMTQ/edit
yaml文件:https://drive.google.com/file/d/0B0T1sizOvRsUU2lGMTdWYWhPaWc/edit
别忘了修改yaml文件里面的参数,比如格的边长和行列数。具体情况根据你标定板大小而定。
(1)录制一个rosbag
rosbag record /ardrone/front/image_raw /ardrone/imu
一个是你相机的topic,另一个是imu的topic。
然后拿着你的设备对准标定板,先是pitch三次,yaw三次,roll三次,up and down三次,左右三次,然后再随意换几个姿势。标定时间按视频里面说,要小于60s。录制完成之后再保存。
下一步就是去下载刚才那个cde版本,如果你的电脑足够牛的话,可以用比较全的版本
ethz-asl/kalibrgithub.com
安装依赖项
sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-indigo-vision-opencv ros-indigo-image-transport-plugins ros-indigo-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
创建一个catkin 工作空间
mkdir -p ~/kalibr_workspace/src
cd ~/kalibr_workspace
source /opt/ros/indigo/setup.bash
catkin init
catkin config --extend /opt/ros/indigo
catkin config --merge-devel # Necessary for catkin_tools >= 0.4. catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
把kabibr放到工作空间里
cd ~/kalibr_workspace/src
git clone https://github.com/ethz-asl/Kalibr.git
编译
cd ~/kalibr_workspace
catkin build -DCMAKE_BUILD_TYPE=Release -j4
这个时间会很长,你可以来盘王者或者吃鸡等一会,有可能你的电脑会像我的一样卡死,那就比较尴尬了。
最后别忘了source一下路径
source ~/kalibr_workspace/devel/setup.bash
其实到这里差不多已经准备就绪了,但是为了防止出现意外,我们最好先运行一下example测试一下环境。
下载这个数据集,把它放进之前的kalibr-cde文件夹下面
https://drive.google.com/file/d/0B0T1sizOvRsUcGpTWUNTRC14RzA/editdrive.google.com
./kalibr_calibrate_imu_camera --target april_6x6.yaml --cam camchain.yaml --imu imu_adis16448.yaml --bag dynamic.bag --bag-from-to 5 45
假如example数据能跑通,说明kalibr工具准备好了,下面开始进入真实环境下的标定过程
(1)
上面那个example你应该可以发现,运行标定程序后面跟着四个文件,第一个是棋盘文件,就是之前需要修改的那个yaml文件,第二个是相机内参文件(这里的内参文件和之前ros获得的文件不同,需要用kalibr单独获得),第三个是imu噪声文件,第四个是之前我们录制好的rosbag
(2)
现在未获得的只有第二个camchain文件,所以先播放一下rosbag看看有没有问题
roscore&&rosbag play xxx.bag
在播放的过程中,检查一下是否有相机和imu话题 rostopic list
(3)
cd kalibr-cde
./kalibr_calibrate_cameras --target april6x6.yaml --bag xxxx/xxx.bag --models pinhole-equi --topics /ardrone/front/image_raw
结束之后会得到一个report和pdf文件。
(4)
在做这一步之前。找到kalibr_calibrate_imu_camera文件,注释掉以下几行
#delete old results
rm -f $HERE/*.pdf 2> /dev/null
rm -f $HERE/*.yaml 2> /dev/null
rm -f $HERE/*.txt 2> /dev/null
rm -f $HERE/*.bag 2> /dev/null
rm -rf $HERE/cde-root/output* 2> /dev/null
./kalibr_calibrate_imu_camera --target april_6x6.yaml --cam 之前获得的相机文件.yaml --imu imu_adis16448.yaml --bag 录制的bag路径(比如example中的dynamic/dynamic).bag --bag-from-to 5 45
然后等待一会,就生成report啦!
如果有问题或者发现文章中有什么错误可以私信或者留言,我都会回答的,虽然我自己也不怎么会。
最后附上几篇能用到的文章
双目imu相机标定:双目相机与IMU camera IMU 联合标定工具箱使用方法--Kalibr
港科大imu标定工具: gaowenliang/imu_utils,相关的专栏文章介绍:Imu_tk算法流程
http://cache.freescale.com/files/sensors/doc/app_note/AN5087.pdf
https://www.vectornav.com/support/library/gyroscope
Department of Computer Science and Technology
编辑于 2018-09-13
同时定位和地图构建(SLAM)
视觉惯性里程计(VIO)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)