Hi, I looked at the Document and I know that the way you calculate new pose from transformPose function is incorrect. This confused me couple time what I looked at it.
void transformPose(sl::Transform &pose, float tx) {
Transform transform_;
transform_.setIdentity();
// Translate the tracking frame by tx along the X axis
transform_.tx = tx;
// Pose(new reference frame) = M.inverse() * Pose (camera frame) * M, where M is the transform between two frames
pose = Transform::inverse(transform_) * pose * transform_;
}
// Get the distance between the center of the camera and the left eye
float translation_left_to_center = zed.getCameraInformation().camera_configuration.calibration_parameters.T.x * 0.5f;
// Retrieve and transform the pose data into a new frame located at the center of the camera
POSITIONAL_TRACKING_STATE tracking_state = zed.getPosition(camera_pose, REFERENCE_FRAME::WORLD);
transformPose(camera_pose.pose_data, translation_left_to_center);
// Pose(new reference frame) = M.inverse() * Pose (camera frame) * M
if you have M^-1 * M = I which Pose * I = Pose so the fomular did nothing if I am correct.
also I catched in python example, you calculate the center of the camera but missing the tx * 0.5
# Get the distance between the center of the camera and the left eye
translation_left_to_center =zed.get_camera_information().camera_configuration.calibration_parameters.T[0]
I think you should update your Documentation.
Thanks