基于kalibr的xtion pro live 相机及与IMU的标定
来源:互联网 发布:怎么定制一个软件 编辑:程序博客网 时间:2024/06/05 06:16
- kalibr的安装
- 点击打开链接https://github.com/ethz-asl/kalibr
Kalibr 提供两种使用方式。 第一种为CDE下直接使用,作者将所需的库文件打包好,省去了配置dependency的步骤,可以直接从
https://github.com/ethz-asl/kalibr/wiki/downloads下载, 注意需要科学浏览。下载之后直接用./cde-exec+命令 即可使用对应的工具。
例如如果我们想使用kalibr内的kalibr_calibrate_cameras功能,使用
./ced-exec kalibr_calibrate_cameras --target april_6x6.yaml --bag static.bag --models pinhole-equi pinhole-equi omni-radtan omni-radtan --topics /cam0/image_raw /cam1/image_raw /cam2/image_raw /cam3/image_raw但是此方法不能使用其中的某些功能,例如我们想使用calibration validator,在CDE环境下是无法使用的。 第二种:build from source。根据https://github.com/ethz-asl/kalibr/wiki/installation的part B中的描述进行安装。
- xtion pro live 相机标定
- 首先我们要下载PTAM,用ptam的cameracalibrator来标定。
下载ptam包,编译之前安装依赖项:sudo apt-get install freeglut3-devsudo apt-get install libblas-devsudo apt-get install liblapacke-dev
进入PtamFixParams.yaml文件第2、3行修改xtion_pro_live的图像分辨率为:ImageSizeX: 640ImageSizeY: 480
成功编译后,进入cameracalibrator.launch修改输入topic :<?xml version="1.0"?><launch> <include file="$(find openni2_launch)/launch/openni2.launch" /> <node name="image_proc" pkg="image_proc" type="image_proc" ns="camera"> <remap from="camera_info" to="/camera/rgb/image_info" /> <remap from="image_raw" to="/camera/rgb/image_raw" /> <remap from="image_mono" to="/mono_image" /> </node> <node name="cameracalibrator" pkg="ptam" type="cameracalibrator" clear_params="true" output="screen"> <!-- <remap from="image" to="/camera/rgb/image_raw" /> --> <remap from="image" to="/mono_image" /> <remap from="pose" to="pose"/> <rosparam file="$(find ptam)/PtamFixParams.yaml"/> </node></launch>
做完了这些,你还需要把ptam中的calib_pattern.pdf打印出来作为标定棋盘,你就可以运行校准程序了,在终端中输入:roslaunch ptam cameracalibrator.launch
针对xtion相机还有一种pinhole模型,给出pinhole模型标定过程:
先把标定程序下载下来: git clone https://github.com/ros-perception/image_pipeline.git
- 去把最新的依赖文件vision_opencv下载下来:
git clone https://github.com/ros-perception/vision_opencv.git
- 扔到空间内的src下编译,然后开始标定
roslaunch openni2_launch openni2.launch rosrun camera_calibration cameracalibrator.py --size 11x7 --square 0.02 image:=/camera/rgb/image camera:=/my_camera --no-service-check
有人会问了不是12x8个方格吗?对啊,所以有11x7内点啊。
有人会问camera:=/my_camera这是什么东东?相机device。因为有–no-service-check所以/my_camera可以随便写!!不检查。但不可以省略。下面的过程可以看下:
教程:http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration
- 首先我们要下载PTAM,用ptam的cameracalibrator来标定。
- 相机/IMU标定
- 如何标定,标定所需文件
* XX.bag:包含有图片信息和IMU数据的ROS包* camchain.yaml:包含相机的内参和畸变参数的文件* IMU.yaml:包含IMU的基本参数,噪音等* target.yaml:标定目标板的参数
- 之前说过需要打印一个棋盘格,kalibr也提供一种制作方式,
kalibr_create_target_pdf --type apriltag --nx [NUM_COLS] --ny [NUM_ROWS] --tsize [TAG_WIDTH_M] --tspace [TAG_SPACING_PERCENT]
将生成的pdf打印出来,置于平稳,光照充足的地方,注意要保持平整。Kalibr作者推荐将camera固定,然后移动标定板,这样可以提高标定的稳定性,但是鉴于我使用场景受限,我使用的是晃动camera方法。
- 之后就可以开始录制bag了,使用
rosbag record /camera/rgb/image_raw /imu/data
标定时注意激活所有的轴,即可录制包含三个topic的rosbag了。
注意录制过程中camera不要距离标定板太近,否则会出现无法初始化focal length的错误。Kalibr是一个十分强大的工具箱,提供了很多工具。我们可以使用calibration validator进行标定的验证,原理是对重投影误差进行量化分析。大家可以自行验证。工具使用上一步骤的camera标定结果以及标定板的yaml文件,具体命令如下:
kalibr_camera_validator --cam camchain.yaml --target target.yaml
其中camchain.yaml为相机标定结果yaml,target.yaml为标定板yaml。部分资料可在以下链接下载:点击打开链接https://github.com/ethz-asl/kalibr/wiki/downloads 若对相机标定结果满意我们可以继续进行camera以及imu的联合标定步骤,此步使用了如下信息:
1. 标定板yaml
2. 相机标定结果yaml
3. imu内参yaml
4. 前面使用的对应bag
有了如上材料即可进行联合标定,具体如下:kalibr_calibrate_imu_camera --target aprilgrid6x4.yaml --cam camchain-2017-07-07-09-13-29.yaml --imu imu.yaml --bag 2017-07-07-09-13-29.bag --bag-from-to 5 45
最后的--bag_from_to是选取地5-45s的bag数据,去除了拾取防止设备产生的抖动部分影响。我们建议进行多组标定之后将标定结果进行最佳无偏估计,不建议对R部分直接取平均值,可以将多组数据的R部分转换成四元数。之后进行处理。- 标定完成后一般会生成三个文件,其中一个,
因为可能存在的人为的安装问题,真实的IMU到相机的的转移矩阵可能不确定.由于没有准确的判定准则,故当前标定的结果,主要基于以下两个方面:
* 真实的IMU坐标系和相机坐标系的转换,即相机和IMU的物理距离
* 标定结果的稳定性上
- 如何标定,标定所需文件
- 未解决的部分
- 相机IMU之间的坐标平移矩阵没有获得;
- imu的标定没有完成。
- 标定完后,代码运行有所改善,但没有预想的好。
- 部分链接:
- 点击打开链接http://blog.csdn.net/binbin_sun/article/details/53791404
- 点击打开链接https://github.com/ethz-asl/kalibr/wiki/downloads
- http://blog.csdn.net/xu1129005165/article/details/52948992
- 点击打开链接http://blog.csdn.net/u013004597/article/details/51965940
- 基于kalibr的xtion pro live 相机及与IMU的标定
- Asus Xtion Pro Live标定
- kalibr标定IMU
- 安装kalibr标定IMU
- 读取xtion pro live的程序笔记。
- 基于matlab的双目+IMU标定
- 相机标定——基于张正友标定标定法与MFC的单目相机标定
- 基于OPENCV的相机标定及代码
- 采用opencv读取xtion pro live的数据
- IMU camera IMU 联合标定工具箱使用方法——Kalibr
- 基于opencv的相机标定
- 相机标定(3)---基于halcon的面阵相机标定
- VINS(三)初始化与相机IMU外参标定
- Asus Xtion Pro Live驱动
- 鱼眼相机与针孔相机的标定与校正基于MATLAB和Opencv
- 相机标定(4)---基于halcon的双目立体视觉标定
- Roomba, Xtion Pro live 实现360度全景照片panorama 无法启动的解决方案
- ROS下订阅topic,显示并保存Kinect(Xtion pro live )深度摄像机的RGB图像
- tomcat服务器时区设置
- Mysql查询优化
- React Native 音频录制例子来解惑入门
- 从Oracle迁移到Mysql之前必须知道的50件事
- solr单机和集群连接方法api
- 基于kalibr的xtion pro live 相机及与IMU的标定
- 求解用g(X)的线性表达式最佳近似f(Y)的一种方式
- plsql使用技巧
- redis 的setnx,数据库读取缓存
- c语言中#和##的用法
- camera摄像原理之二:色彩空间
- HDU-2063 过火车
- Mysql迁移到Oracle前需要了解的50件事
- JAVA Web 项目开发笔记 ----- springMVC, maven,reactJs