参考链接:kilibr官网    https://github.com/ethz-asl/kalibr/wiki/camera-imu-calibration  ;

https://blog.csdn.net/HUST_lc/article/details/96144499  感谢学友指教

https://blog.csdn.net/weixin_40830684/article/details/88768225

https://blog.csdn.net/zhubaohua_bupt/article/details/80222321 标定结果等各参数讲解

https://blog.csdn.net/mxdsdo09/article/details/83514310 同上,标定结果等各参数讲解

https://blog.csdn.net/tercel_zhang/article/details/90637392   标定中各个坐标系理解,讲的非常清晰

https://blog.csdn.net/Aoulun/article/details/78768570 同上,内含畸变参数讲解

https://blog.csdn.net/zhuoyueljl/article/details/89509623 标定单目相机的一些注意事项参考

https://blog.csdn.net/qq_31119155/article/details/79908668

https://blog.csdn.net/u012177641/article/details/92824014


总体流程:

前期准备:在ubuntu16.04配置好realsense d435i相机环境,详细参见前面的博客:https://blog.csdn.net/weixin_40628128/article/details/90376767

https://blog.csdn.net/weixin_40628128/article/details/89891227

https://blog.csdn.net/weixin_40628128/article/details/89703000

标定工具安装与配置(kalibr)----> 深度相机(RGB,其中IR相机为双目计算,不需要标定)标定----> imu标定  ----> 深度相机+imu联合标定

一、kalibr安装:

直接按照官网进行:

https://github.com/ethz-asl/kalibr/wiki/installation

选用非CDE方式在ros kinetic环境下安装。期间遇到pip报错,解决办法:https://blog.csdn.net/lyll616/article/details/85090132

至此,安装好了kalibr。

在标定(如kalibr_calibrate_cameras)前,需进入kalibr_workspace文件目录下source一下:

cd ~/kalibr_workspace
source ~/kalibr_workspace/devel/setup.bash

二、realsense D435i 的camera标定

(1)realsense d435i可以直接读取的相机内参:

roslaunch realsense2_camera rs_camera.launch //打开相机节点
rostopic echo /camera/color/camera_info //查看相机内参

(2)kalibr标定camera

  • 设置棋盘格参数,保存成yaml文件(位置随意,在后面引用绝对路径即可,例如kalibr_calibrate_cameras --target ~/bagfiles/checkboard.yaml)

checkboard的参数配置yaml文件在链接(https://github.com/ethz-asl/kalibr/wiki/downloads)下载,下载后修改以下参数(根据自己的实际标定板参数进行修改,我这里是购买的是GP340标定棋盘格9X12):

target_type: 'checkerboard' #gridtype
targetCols: 8               #number of internal chessboard corners 注意是内角点数目
targetRows: 11               #number of internal chessboard corners 注意是内角点数目
rowSpacingMeters: 0.025      #size of one chessboard square [m]
colSpacingMeters: 0.025      #size of one chessboard square [m]
  • 录制camera标定数据:rosbag

为了方便查看,先打开可视化窗口:

终端1:roslaunch realsense2_camera rs_camera.launch //打开相机节点
终端2:rviz,选camera_link,add topic->camera->color->image_raw  打开可视化窗口,固定相机,移动标定板(效果应稍微好一些)

ros录制和回放数据子集教程参考官网或链接https://blog.csdn.net/u010510350/article/details/72457758。

将图像频率降低为4HZ,这里可以用throttle方法,不会出错,并发布心得topic,不会修改原topic:

rosrun topic_tools throttle messages /camera/color/image_raw 4.0 /color

利用throttle工具降低录制的RGB图像频率,降至4HZ,新发布的topic名字是/color

rosbag record -O camd435i /color

其中 -O表示可以保存成 camd435i.bag(设置bag名称),/color 为录制的话题名称。录制方法参见(https://blog.csdn.net/zhuoyueljl/article/details/89509623)

(ctrl-c结束录制,bag文件会自动保存到录制时命令行所在的目录,我这里是~/bagfiles)

  • kalibr标定单个camera(之前先对kalibr_workspace source一下)
kalibr_calibrate_cameras --target ~/bagfiles/checkboard.yaml --bag ~/bagfiles/camd435i.bag --bag-from-to 5 50 --models pinhole-radtan --topics /color 

其中--target ~/bagfiles/checkboard.yaml为定位棋盘格yaml参数文件路径;--bag ~/bagfiles/camd435i.bag为设置录制bag文件路径;--bag-from-to 5 50表示用5~50s(根据录制数据的质量决定时间的取舍)之间的数据进行计算;--models pinhole-radtan为相机模型;--topics /color,bag录制的话题为topics。

果然也卡在了角点上。。。承蒙前辈手留余香~~https://github.com/ethz-asl/kalibr/issues/164,在后面添加--show-extraction

kalibr_calibrate_cameras --target ~/bagfiles/checkerboard.yaml --bag ~/bagfiles/camd435i.bag --bag-from-to 5 50 --models pinhole-radtan --topics /color --show-extraction

【此外,还可以对多个相机进行标定,如两个相机:

kalibr_calibrate_cameras --target src/kalibr/checkerboard.yaml --bag src/kalibr/bag/fisheye_2019-07-15-21-52-12.bag --models pinhole-radtan pinhole-radtan --topics /image_raw1_th /image_raw2_th

详情参见:https://blog.csdn.net/HUST_lc/article/details/96144499  】

三、IMU内参获取/标定

https://cloud.tencent.com/developer/article/1438368 参考理解,内有matlab标定源码链接及论文讲解。

这里需要对IMU原理及算法熟悉,这周时间预算不足,放在vio学习阶段学习。这里暂时用网友示例的数据做yaml,先看联合标定。

四、kalibr标定camera+IMU

参考 https://blog.csdn.net/mxdsdo09/article/details/83514310

  • 联合标定的目的

我们进行camera-IMU标定的目的是为了得到IMU和相机坐标系的相对位姿矩阵T相对时间延时t_shift(t_imu=t_cam + t_shift)

  • 需要的文件

1、.bag:包含有图片信息和IMU数据的ROS包
2、camchain.yaml: 包含相机的内参、畸变参数的文件,如果是双目的话,还包含两个相机的位置转换矩阵;
3、IMU.yaml: 包含IMU的噪声密度、随机游走;

4、checkboard.yaml:标定目标板的参数

所以在进行camera-IMU 标定前,我们分别要对camera内参(第二节)和IMU进行标定(第三节)得到相应的camd435i.yaml和IMU.yaml文件,已准备好相关文件,放到~/bagfile文件目录下。

  • 输出结果

IMU和相机坐标系的相对位姿矩阵T和重投影误差(或者像素误差,Pixel Error(像素误差)指的是the standard deviation of the reprojection error (in Pixel) in both x and y directions respectivly(在x和y方向上以像素为单位的重投影误差的标准差。根据优化的准则我们知道重投影误差越小,就说相机标定的精度越高)。

  • 标定方法(kalibr)

checkerboard.yaml:

target_type: 'checkerboard' #gridtype
targetCols: 8               #number of internal chessboard corners
targetRows: 11               #number of internal chessboard corners
rowSpacingMeters: 0.025      #size of one chessboard square [m]
colSpacingMeters: 0.025      #size of one chessboard square [m]

camchain.yaml:(用自己的相机内参参数替换里面的数值,参数见camd435i.yaml)

cam0:camera_model: pinholeintrinsics: [632.9640658678117, 638.2668942402212, 339.9807921782614, 243.68020465500277]distortion_model: equidistantdistortion_coeffs: [0.366041713382057, 1.1433178097591097, -3.008125411486294, -3.1186836086733227]T_cam_imu:- [0.01779318, 0.99967549,-0.01822936, 0.07008565]- [-0.9998017, 0.01795239, 0.00860714,-0.01771023]- [0.00893160, 0.01807260, 0.99979678, 0.00399246]- [0.0, 0.0, 0.0, 1.0]timeshift_cam_imu: -8.121e-05rostopic: /colorresolution: [640, 480]

IMU.yaml:

rostopic: /imu
update_rate: 200.0 #Hzaccelerometer_noise_density: 0.01 #continous
accelerometer_random_walk: 0.0002
gyroscope_noise_density: 0.005 #continous
gyroscope_random_walk: 4.0e-06

方法基本与camera标定等同,只不过需要设定IMU的频率(降低至200HZ)、同时录制IMU topic与color topic等。

标定动作参照官网的视频:https://github.com/ethz-asl/kalibr    主要需要激活留个自由度的运动(xyz旋转与平移)

https://blog.csdn.net/u012177641/article/details/92824014 主要参考如何将acce与gyro合成一个话题

realsense的ROS launch文件中有将acc和gyr两个整成一个imu话题的配置,设置一下就好,对应为:

<arg name="enable_sync"               default="true"/><arg name="unite_imu_method"         value="linear_interpolation"/>     【原来值为空:value= “ ”/】

其中,linear_interpolation可以换成其他的,具体是啥目前不太清楚。

将图像频率降低为4HZ,这里可以用throttle方法,不会出错,并发布新的topic,不会修改原topic:

rosrun topic_tools throttle messages /camera/color/image_raw 20.0 /color
rosrun topic_tools throttle messages /camera/gyro/image_info 200.0 /imu

利用throttle工具降低录制的RGB图像频率,降至20HZ,新发布的topic名字是/color,把IMU频率降低为200Hz,新发布的topic名字是/imul。

录制dynamic.bag数据(同时录制/imu与/color话题):

rosbag record -O dynamic /color /imu

开始标定:

kalibr_calibrate_imu_camera --target ~/bagfiles/checkerboard.yaml --cam ~/bagfiles/camchain.yaml --imu ~/bagfiles/imu.yaml --bag ~/bagfiles/dynamic.bag --bag-from-to 5 45 --show-extraction

五、realsense D435i 的IMU configuration(官网方法)

该方法便于商用,但仅采用了六个位置静止放置,标定数据太少,标定误差会较大,不利于高精度测量和导航应用,可能并不适合SLAM。

参照官网进行标定(白皮书):https://www.intel.com/content/www/us/en/support/articles/000032303/emerging-technologies/intel-realsense-technology.html

其中在配置软件环境时,sudo pip install numpy因网络问题总是中断,(不断尝试),sudo apt install python-numpy似乎也行。不放心,可以导入numpy试试是否已经安装成功:

未提示错误,表示numpy安装成功(感谢学友指点)。


tip:深度图与彩色图对齐:在d435i的launch文件(rs_camera.launch)里修改align_depth值为true即可。

Realsense D435I标定相关推荐

  1. realsense d435i标定imu与camera

    realsense d435i标定imu与camera 1.标定目的 realsense d435i包含两个红外相机.红外发射器.RGB相机和IMU四个模块,显然四个传感器的空间位置是不同的,我们在处 ...

  2. Intel Realsense D435i标定详细步骤

    主要介绍Inter D435i深度相机的IMU.相机和IMU与相机外参数标定的过程.其中,IMU使用的是realsense官方文档的教程,相机和外参数使用的是Kalibr的标定方法.本文所介绍过程的所 ...

  3. ublox f9p,Realsense D435i相关资料

    一.Realsense D435i使用笔记 1.Realsense D435i使用笔记 2.Inter Realsense D435i标定详细步骤_高喜天天的博客-CSDN博客 3.Realsense ...

  4. Intel Realsense D435i各类标定教程

      在之前的实验中用到了realsense-D435i,为了提高精度使用之前必须要进行标定.本篇文章就介绍下各类标定方法.因为我最终的目的是完成IMU和双目的联合标定,整个流程都是围绕整个目的展开的. ...

  5. (已修正精度 1mm左右)Realsense d435i深度相机+Aruco+棋盘格+OpenCV手眼标定全过程记录

    文章目录 2023.5更新 ------------------下面为原文--------------------- 一.前期准备 1.1 手眼标定原理 1.2 Aruco返回位姿的原理 1.3 生成 ...

  6. Ubuntu16.04下使用kalibr标定intel RealSense D435i imu+双目

    使用kalibr标定RealSense D435i imu+双目 一.实验背景 RealSense D435i包含了rgb图像.左视图.右视图.深度图.imu等主要的数据.为了更好的使用这些数据进行算 ...

  7. RealSense D435i + imu 标定 Ros Melodic

    准备工作: ubuntu/ros-melodic环境 librealsense realsense-ros 一.修改rs_camera.launch文件中的参数 修改之前装好的realsense环境中 ...

  8. Realsense d435i内参、外参标定

    使用工具code_utils.imu_utils.kalibr对Realsense d435i 内参.外参标定.本文介绍上述工具的安装,及标定方法. 一.code_utils安装 1.建立工作空间 m ...

  9. Ubuntu18.04 + kinova joca2机械臂 + RealSense D435i深度相机进行eye to hand手眼标定

    文章目录 前言 一.前期准备 1. RealSense D435i安装 2. Kinova-ROS安装 二.手眼标定环境配置 1. visip 2. aruco_ros 3. easy_handeye ...

最新文章

  1. NR-ARFCN和频率之间换算
  2. VTK:可视化算法之ImageGradient
  3. JavaWeb总结(四)
  4. mysql优化必知(mysql的语句执行顺序)
  5. java RSA加密生成license,用CPU序列号生成机器码
  6. 超微主板升级bios_超微主板bios升级大盘点
  7. noip2016海港(超级详细)
  8. 沟通中的情绪管理(演讲稿)
  9. Apple Silicon (mac m1 pro) 完整配置CS285 (brew, miniforge, mujoco)
  10. 时序违例的原因及其解决办法
  11. 关于微信公众号分享在安卓手机不显示分享图片的问题
  12. oracle rfs进程过多,Oracle物理备库RFS进程消失,不能启动--解决
  13. 服务器sata硬盘安装系统,#####SATA、RAID、SCSI硬盘用U盘安装原版XP、2003系统######支持服务器硬盘!...
  14. 福布斯:阿里巴巴收购雅虎对大家都有利
  15. 基于深度学习对皮肤病进行识别设计与实现
  16. 搜索插件实现热搜词,历史查询功能
  17. 东软2012实习生招聘
  18. 三维模型还原记忆中的老房子!居然是她的毕业作品....
  19. java 匹配url的正则表达式_java匹配url的正则表达式
  20. 11届蓝桥杯大赛青少年C++高级组模拟题

热门文章

  1. 强大的stylus!
  2. oracle 排序太慢,Oracle 排序优化
  3. [easyui]datagrid鼠标移动显示单元格内容
  4. java计算年卡剩余天数
  5. webstorm的使用快速入门
  6. 部署一个 Containerd 容器运行时的 Kubernetes 集群
  7. java 实现杂志订阅管理系统设计
  8. 守望者的逃离 贪心 动态规划
  9. 【Web前端】标签大全HTML/CSS/JavaScript
  10. ps手持_大胆地只手持