!
Note: This tutorial assumes that you have completed the previous tutorials: First Steps, Parameters. |
Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags. |
Camera Frames and Calibrations
Description: This tutorial explains how 3D data from a camera gets transformed to the camera's target frame.Tutorial Level: INTERMEDIATE
Next Tutorial: Calibration Patterns
The camera node automatically manages the transformation of the 3D data between different frames.
The camera frame (specified by the camera node's camera_frame parameter) is a TF frame in which data captured by the camera lived (except if you have a calibration, see below). By default, this frame is set to <serial>_optical_frame, where serial is a placeholder for the camera's serial number.
The target frame (specified by the camera node's target_frame parameter) is a TF frame in which you want to receive data from the camera. All data is automatically transformed using the current TF transformation between the camera and the target frame (this includes the point cloud as well as poses of calibration patterns). By default, the target frame is the same as the camera frame.
In addition to the TF transformation between camera and target frame, there is also an internal camera link in the NxLib. This transformation accounts for a possible workspace or hand-eye calibration. For example, if you attached an Ensenso camera to the wrist of your robot (and specified the robot's wrist frame as the camera frame) and perform a hand-eye calibration, it can account for the difference between the camera and the wrist frame of the robot (as it is actually known in TF). See the relevant tutorials for more information on how such a calibration can be executed.
Camera Images (data as it is seen from the camera) | | Camera Link (Hand-Eye/Workspace Calibration) v Camera Frame | | TF v Target Frame