One point, multiple coordinate descriptions
The same tabletop point can have object-frame coordinates [0.1, 0, 0], or camera-frame coordinates [0.3, -0.2, 0.8]. Both describe the same point.
Coordinate Frames & Rigid Transforms
Pose describes a relationship between two coordinate frames. Specify the source and destination first; composition, inversion, projection, and robot transform chains then become derivable and testable.
Mental Model
A coordinate frame provides an origin and oriented axes; coordinates numerically express a geometric object in that frame. Changing frames leaves the physical world unchanged while changing its numerical description.
The same tabletop point can have object-frame coordinates [0.1, 0, 0], or camera-frame coordinates [0.3, -0.2, 0.8]. Both describe the same point.
Rotation and translation describe one frame's position and orientation relative to another. Object pose is the pose of its object frame relative to a reference frame.
Rigid transforms preserve distances and angles, translating points, directions, and axes between descriptions without bending or scaling space.
Geometric object
Coordinates in A
Coordinates in B
Notation Contract
Papers and repositories use potentially ambiguous names such as T_AB, T_BA, pose, and extrinsic. Superscript/subscript frame notation here makes each operation's inputs and outputs explicit.
Passive view · site default
Active view
Interactive Lab
The lab uses full 3D translation and ZYX Euler rotations. First edit the camera pose in the world WTC, then the object pose in the camera CTO. The system computes WTO and its inverse in real time.
Interactive · SE(3)
Composition result
Point transform
Enter object-frame point Op; the lab applies WTO to obtain world-frame coordinates Wp.
The point itself does not move; only its coordinate reference changes.
Frame Atlas
Real systems contain more than object and camera frames. Acquisition, SLAM, robotics, and grasping add reference frames; define every connecting transform's direction explicitly.
A local frame attached to a CAD or scanned model. Model points, 3D boxes, and symmetry axes are defined relative to it.
A 3D frame centered at the camera's optical center. Object 6D pose is usually first expressed relative to this frame.
A global reference for consistency across frames, cameras, or devices, usually called map or world in SLAM.
Robot chains often include base, end-effector, tool-center-point, and grasp frames.
Image (u, v) usually starts at the upper left, with u right and v down. Camera-frame 3D points undergo depth division and intrinsics K to reach pixels; an SE(3) transform alone cannot perform perspective projection.
Convention Atlas
Coordinate systems have no unique natural convention. OpenCV, ROS, BOP, Blender, and graphics pipelines make different valid choices; errors often arise at their interfaces.
| Ecosystem / software | Typical frame | Axis directions | Common transform semantics | Units |
|---|---|---|---|---|
| OpenCV camera | Camera / optical | +x image-right, +y image-down, +z forward along the optical axis | rvec and tvec usually map object or world points into the camera frame | Determined by input data |
| BOP | Model / camera / world | All right-handed; cameras follow OpenCV; models usually have +z up | cam_R_m2c, cam_t_m2c: model → camera | Models and translations in mm |
| ROS body | base_link, etc. | +x forward, +y left, +z up | TF describes parent–child frames; inspect header / child | m, rad (SI) |
| ROS optical | *_optical | +x right, +y down, +z forward | Specifically aligned with common camera-imaging conventions | m, rad (SI) |
| Blender | World / object / camera local | World +z up; cameras usually look along local -z with local +y up | matrix_world usually maps local → world; import/export can remap axes | Blender Unit, configurable |
| OpenGL-style view | Eye / view | +x right, +y up, usually viewing along -z | The view matrix is usually the inverse camera pose | Application-defined |
Verify signs instead of guessing from memory
For example, converting OpenCV optical coordinates to an x-right, y-up, z-backward graphics view often uses diag(1, -1, -1). Still verify each axis against source and destination definitions rather than copying context-free conversion code.
Task Chains
The same composition and inversion rules connect PnP, camera localization, SLAM, hand–eye calibration, and robotic grasping. Frame notation makes these meanings explicit.
OpenCV-style PnP usually returns CTO: it maps model points from O to C before camera-intrinsic projection.
Vision algorithms often use extrinsics CTW to map world points into the current camera; trajectory visualization usually needs camera pose in the world WTC.
Let B denote the robot base, E the end effector, C the hand-mounted camera, and O the object. Three known transforms determine object pose in the base.
If a grasp template gives target gripper G's pose in object coordinates OTG, compose it into the robot-base frame.
Worked Example
Camera frame C is rotated 90° about z relative to world W, with its origin at world coordinates [1, 0, 0]. A point has camera coordinates [0.5, 0, 1].
Debug Protocol
Make implicit semantics explicit, then narrow the problem with visualization and invariants.
Temporarily rewrite p, R, t, and T as Ap, ATB. If frame labels cannot be assigned, the variable's meaning is unclear.
ATBCTD cannot be multiplied directly because intermediate B and C do not match.
Transform [0,0,0,1] and the three unit axes separately to interpret translation, axis flips, and rotation directions more easily than with random points.
Require RTR≈I, det(R)≈+1, and homogeneous bottom row [0,0,0,1].
Project object xyz axes, 3D boxes, and CAD contours into the image to reveal direction errors.
First eliminate mm/m, degrees/radians, row/column vectors, transform directions, and OpenCV/OpenGL axis mismatches; then assess network prediction quality.
Next topic · 03