RGB camera

Bring up the OpenNI driver:

roslaunch openni_launch openni.launch

Now follow the standard monocular camera calibration instructions. Use the following command (substituting the correct dimensions of your checkerboard):

rosrun camera_calibration cameracalibrator.py image:=/camera/rgb/image_raw camera:=/camera/rgb --size 5x4 --square 0.0245

Don't forget to Commit your successful calibration.

IR (depth) camera

The Kinect detects depth by using an IR camera and IR speckle projector as a pseudo-stereo pair. We will calibrate the "depth" camera by detecting checkerboards in the IR image, just as we calibrated the RGB camera.

The speckle pattern makes it impossible to detect the checkerboard corners accurately in the IR image. The simplest solution is to cover the projector (lone opening on the far left) with one or two Post-it notes, mostly diffusing the speckles. An ideal solution is to block the projector completely and provide a separate IR light source. Good illumination sources include sunlight, halogen lamps, or incandescent lamps.

IR with speckle pattern

IR with projector covered by Post-it note

As before, follow the monocular camera calibration instructions:

rosrun camera_calibration cameracalibrator.py image:=/camera/ir/image_raw camera:=/camera/ir --size 5x4 --square 0.0245

The Kinect camera driver cannot stream both IR and RGB images. It will decide which of the two to stream based on the amount of subscribers, so kill nodes that subscribe to RGB images before doing the IR calibration.

Don't forget to Commit your successful calibration.

Where are the intrinsics saved?

When you click Commit, cameracalibrator.py sends the new calibration to the camera driver as a service call. The driver immediately begins publishing the updated calibration on its camera_info topic.

openni_camera uses camera_info_manager to manage calibration parameters. By default, it saves intrinsics to $HOME/.ros/camera_info/NAME.yaml and identifies them by the device serial number:

$ ls ~/.ros/camera_info/
depth_B00362708888047B.yaml rgb_B00362708888047B.yaml

Whenever you bring up the OpenNI driver, it will look for a previously saved calibration. If you want to share the intrinsics among multiple users, move them somewhere public (e.g. /public/path/) and use a launch file which configures the camera info URLs:

<launch>

 <!-- Include official launch file and specify camera_info urls -->
<include file="$(find openni_launch)/launch/openni.launch">
<!-- provide arguments to that launch file -->
<arg name="rgb_camera_info_url"
value="file:///public/path/rgb_B00362708888047B.yaml" />
<arg name="depth_camera_info_url"
value="file:///public/path/depth_B00362708888047B.yaml" />
</include> </launch>
 

Wiki: openni_launch/Tutorials/IntrinsicCalibration (last edited 2015-02-06 01:36:34 by AlexanderReimann)

http://wiki.ros.org/openni_launch/Tutorials/IntrinsicCalibration

使用ls ~/.ros/camera_info/之后,发现有7个.yaml后缀文件。使用cat ~/.ros/camera_info/1.yaml

image_width:
image_height:
camera_name: head_camera
camera_matrix:
rows:
cols:
data: [370.515976248363, , 313.8790868840471, , 372.6830969227434, 231.7153990263267, , , ]
distortion_model: plumb_bob
distortion_coefficients:
rows:
cols:
data: [-0.3004104519610615, 0.07652258370676726, -0.001477826771302646, -0.001199374872901745, ]
rectification_matrix:
rows:
cols:
data: [, , , , , , , , ]
projection_matrix:
rows:
cols:
data: [270.0549621582031, , 307.5854707490471, , , 317.0104064941406, 226.6749221178361, , , , , ]xiaoqiang@xiaoqiang-desktop:~$

2.yaml

image_width:
image_height:
camera_name: head_camera
camera_matrix:
rows:
cols:
data: [366.8006737481114, , 313.2319307503966, , 369.4691705536239, 225.8932701116596, , , ]
distortion_model: plumb_bob
distortion_coefficients:
rows:
cols:
data: [-0.2955066415987022, 0.07398741879692314, 0.001109057089446478, 0.0005550013886223383, ]
rectification_matrix:
rows:
cols:
data: [, , , , , , , , ]
projection_matrix:
rows:
cols:
data: [267.2522277832031, , 310.626720252556, , , 314.1973266601562, 220.8795998314854, , , , , ]xiaoqiang@xiaoqiang-desktop:~$

3.yaml

image_width:
image_height:
camera_name: head_camera
camera_matrix:
rows:
cols:
data: [367.7203842386191, , 312.1633776999364, , 369.8504643810227, 222.327969033836, , , ]
distortion_model: plumb_bob
distortion_coefficients:
rows:
cols:
data: [-0.3028043701396974, 0.08016316913146398, 0.001972259854054233, -0.0005855105383069578, ]
rectification_matrix:
rows:
cols:
data: [, , , , , , , , ]
projection_matrix:
rows:
cols:
data: [271.3121643066406, , 309.4569959074397, , , 313.3587341308594, 216.6703090559513, , , , , ]xiaoqiang@xiaoqiang-desktop:~$

4.yaml

image_width:
image_height:
camera_name: head_camera
camera_matrix:
rows:
cols:
data: [374.4079261743749, , 312.6902058006406, , 377.1063870868036, 231.8591658323552, , , ]
distortion_model: plumb_bob
distortion_coefficients:
rows:
cols:
data: [-0.3010382975004438, 0.07439561116406565, -0.001492430415890119, -0.0003780448972454258, ]
rectification_matrix:
rows:
cols:
data: [, , , , , , , , ]
projection_matrix:
rows:
cols:
data: [271.7996520996094, , 307.0881469125889, , , 321.7455749511719, 226.9183813513646, , , , , ]xiaoqiang@xiaoqiang-desktop:~$

5.yaml

image_width:
image_height:
camera_name: head_camera
camera_matrix:
rows:
cols:
data: [373.5111594774043, , 315.8084189513565, , 375.5234360862851, 229.6133929271384, , , ]
distortion_model: plumb_bob
distortion_coefficients:
rows:
cols:
data: [-0.2970245237058798, 0.07110293616491861, -0.0001459348712873391, -0.0009524327516462756, ]
rectification_matrix:
rows:
cols:
data: [, , , , , , , , ]
projection_matrix:
rows:
cols:
data: [257.2185668945312, , 313.4603221630314, , , 259.698974609375, 229.0707409084716, , , , , ]xiaoqiang@xiaoqiang-desktop:~$

6.yaml

image_width:
image_height:
camera_name: head_camera
camera_matrix:
rows:
cols:
data: [371.5469859488027, , 313.7857920360233, , 374.1714701553096, 230.9875296271416, , , ]
distortion_model: plumb_bob
distortion_coefficients:
rows:
cols:
data: [-0.3041189203607426, 0.07966724101404286, -0.001437047423319973, -0.0007192846641734516, ]
rectification_matrix:
rows:
cols:
data: [, , , , , , , , ]
projection_matrix:
rows:
cols:
data: [262.8392028808594, , 312.3786083245795, , , 265.9633483886719, 227.7569378555927, , , , , ]xiaoqiang@xiaoqiang-desktop:~$

7.yaml

image_width:
image_height:
camera_name: head_camera
camera_matrix:
rows:
cols:
data: [371.5334862939256, , 315.9415386864103, , 374.2254744680155, 230.2973984145617, , , ]
distortion_model: plumb_bob
distortion_coefficients:
rows:
cols:
data: [-0.3008205280473007, 0.07564784106509534, -0.0009834589984554513, -0.001248593384655783, ]
rectification_matrix:
rows:
cols:
data: [, , , , , , , , ]
projection_matrix:
rows:
cols:
data: [259.6164855957031, , 313.3351599445923, , , 262.554443359375, 227.852100494405, , , , , ]xiaoqiang@xiaoqiang-desktop:~$

相机矩阵(Camera Matrix):https://blog.csdn.net/zb1165048017/article/details/71104241

最新文章

  1. 用.net在画出镂空图片
  2. 【VC++技术杂谈006】截取电脑桌面并将其保存为bmp图片
  3. Java---类加载机制,构造方法,静态变量,(静态)代码块,父类,变量加载顺序
  4. 利用print2flashsetup.exe文档转swf
  5. Makefile Shell 脚本;sed命令
  6. QT中显示GIF图片
  7. hdu 5311 Hidden String (BestCoder 1st Anniversary ($))(深搜)
  8. seajs 2.3.0 加入jquery
  9. A XSS filter for Java EE web apps--转载
  10. Qt String 与char* char int之间的转换
  11. 判断进程是64bit还是32bit
  12. android tips—NumberPicker,DataPicker,TimePicker样式改动
  13. A. Two Bases
  14. MysqL错误之_ERROR! MySQL server PID file could not be found!
  15. 【OSX】build AOSP 2.3.7时的build error解决
  16. shell脚本死循环检查是否有特定的路由,若存在进行删除操作
  17. 关于 EF 对象的创建问题
  18. LinkedList(实现了queue,deque接口,List接口)实现栈和队列的功能
  19. oracle数据库tns配置方法详解
  20. JBoss 7 里一个EJB依赖其他jar的几种方式

热门文章

  1. C# zedgraph 怎么设置初始时坐标轴的比例??
  2. weex入门篇
  3. TS流解析 二 *****
  4. unittest框架出报告乱码的问题解决
  5. Java 正则表达式详细实例解析
  6. javascript中数组的强大用法&#183;
  7. java中的左移 右移
  8. django-中间件,流量统计实例
  9. centos7.3部署django用uwsgi和nginx[亲测可用]
  10. mysql统计一个库里面的表的总数