ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
Sebastian,
A is called a camera matrix, or a matrix of intrinsic parameters. (cx, cy) is a principal point (that is usually at the image center), and fx, fy are the focal lengths expressed in pixel-related units. In "calibration_rgb.yaml" (for example), you can see the following lines:
camera_matrix:
rows: 3
cols: 3
data: [ 526.37013657, 0.00000000, 313.68782938, 0.00000000, 526.37013657, 259.01834898, 0.00000000, 0.00000000, 1.00000000 ]
Skew coefficient: The skew coefficient defining the angle between the x and y pixel axes is stored in the scalar alpha_c. In your case, it should be 90 degrees or PI/2 radians.
Distortions: The image distortion coefficients (radial and tangential distortions) are stored in the 5x1 vector kc. In "calibration_rgb.yaml" (for example), you can see the following lines:
distortion_coefficients:
rows: 1
cols: 5
data: [ 0.18126525, -0.39866885, 0.00000000, 0.00000000, 0.00000000 ]
I don't know this driver much. I once heard that it might be reading the factory calibration from the device but I cannot say if this is true or not.
When I check the file openni_camera/launch/openni_kinect.launch, I see that the openni_node needs calibration information contained in a yaml file. So I tend to believe that it reads it from a file, not directly from the device, but this is only an assumption:
<rosparam command="load" file="$(find openni_camera)/info/openni_params.yaml" />
This is as far as my knowledge goes on the subject. For more information, you might want to explore the kinect and openni mailing lists.
I hope it helps,
Raph