Realsense D435I标定

参考链接: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: pinhole
  intrinsics: [632.9640658678117, 638.2668942402212, 339.9807921782614, 243.68020465500277]
  distortion_model: equidistant
  distortion_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-05
  rostopic: /color
  resolution: [640, 480]

IMU.yaml:

rostopic: /imu
update_rate: 200.0 #Hz
 
accelerometer_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即可。

 

  • 24
    点赞
  • 245
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: VisionPro 眼在手上 9 点标定是一种视觉系统的校准方法。在使用 VisionPro 眼在手上视觉系统之前,需要进行一系列的标定操作来确保其准确性和精度。 首先,标定过程通常需要一个特定的校准板,该校准板上会有一些已知的几何标记和特征点。这些标记和特征点的位置和尺寸已经事先测量和记录下来。 在进行 VisionPro 眼在手上 9 点标定时,需要将校准板放置在视觉系统的视野范围内。然后系统会通过摄像头将校准板的图像输入到计算机中,进行后续的图像处理和分析。 在标定过程中,系统会自动选择一些特定的标记点,并对它们进行测量和分析。通过对这些标记点的识别和测量,视觉系统可以确定摄像头的内外参数,如焦距、畸变等。 通过对足够数量和位置分布合理的标记点进行测量和分析,系统可以计算出摄像头的准确位置和姿态信息,以及图像坐标与实际世界坐标之间的转换关系。 这样,当 VisionPro 眼在手上视觉系统进行实际应用时,它可以根据摄像头获取到的图像,准确地测量并识别出物体的位置、姿态以及其他相关信息,以满足相应的应用需求。 总之,VisionPro 眼在手上 9 点标定是一种通过测量和分析标记点信息来确定视觉系统参数的方法,使得系统可以准确地感知和理解物体的位置和属性。这种标定方法可以提高视觉系统的准确性和可靠性,进而实现更高效和精确的图像处理和分析功能。 ### 回答2: VisionPro眼是一种先进的视觉系统,用于检测和识别物体。标定是将摄像头、镜头和机器之间的关系进行校准,以便正确地捕捉和处理图像。在手上9点标定是一种常见的标定方法,用于确定相机和物体之间的空间关系。 首先,需要准备一块平坦的表面和9个定位点,这些定位点将被相机捕捉到。这些点可以是独特的特征点,如图案或标记。 然后,在VisionPro软件中创建一个标定项目,并选择适当的标定模式,以便进行9点标定。在标定向导中,需要按照指示将相机对准定位点,并点击每个点进行标定。在每个点上,系统将捕捉图像,并计算相机和物体之间的转换矩阵。 完成所有9个点的标定后,VisionPro软件将根据捕捉到的图像和标定点的位置确定相机的位置和角度。这个信息将用于后续的图像处理和检测任务。 通过手上9点标定,VisionPro眼可以获得高精度和可靠的图像数据,以便准确地分析和识别物体。这种标定方法具有简单易行、准确性高的特点,广泛应用于视觉系统中的各种应用领域,如自动化生产、质量控制和机器人技术等。 ### 回答3: VisionPro是一种先进的机器视觉软件,可以通过图像处理和分析来实现自动化任务。在进行眼在手的9点标定时,我们首先需要准备好标定板和相机。 首先,将标定板放置在一个固定的位置,确保标定板完全可见。然后,将相机安装在稳定的支架上,并调整相机的焦距和角度,以便完整地捕捉到标定板的图像。接下来,打开VisionPro软件并选择标定功能。 标定开始后,系统会自动识别标定板上的9个特征点,并对其进行记录和匹配。这些特征点包括标定板的四个角点和五个内部点。通过对这些点进行精确的计算和测量,VisionPro可以确定相机在物理空间中的位置和姿态。 随后,系统会显示出标定结果,包括相机的内部参数和外部参数。其中,内部参数包括相机的焦距、主点位置和畸变等信息,而外部参数则包括相机的平移向量和旋转矩阵。这些参数将在后续的视觉工作中用于计算物体的位置和姿态。 总结起来,VisionPro眼在手的9点标定通过对标定板上的特征点进行准确的测量和计算,得出了相机的内部和外部参数。这些参数可以帮助我们在后续的机器视觉应用中实现准确的物体定位和姿态识别。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值