ZED X Mini Reference Frame Creation

Hello,

I am trying to simulate the pose and IMU outputs of a ZED X Mini and I want to make sure I correctly understand the coordinate-frame conventions used by the ZED SDK.

Suppose I initialize the camera with:

init_params.coordinate_system = sl::COORDINATE_SYSTEM::RIGHT_HANDED_Z_UP_X_FORWARD;

My current understanding is the following:

Camera frame:

  • +X forward into the scene

  • +Y left

  • +Z up

  • origin approximately at the left eye by defaultWorld frame:
    +Z gravity-aligned up, if gravity alignment is enabled
    +X approximately the initial camera heading projected onto the horizontal plane
    +Y approximately initial camera left
    fixed after positional tracking initialization
    initialized so the camera position starts near the world frame origin

    Pose from getPosition(…, REFERENCE_FRAME::WORLD):
    pose of the left camera frame relative to the fixed world frame

    Initial pose:
    translation is approximately (0, 0, 0)
    rotation is approximately identity only if the camera starts level
    if the camera starts pitched or rolled, the initial rotation may be non-identity
    because the world frame is gravity-aligned while the camera frame is tilted