ID: KF-005
Sequential RGBD odometry accumulates drift over a full 360 scan.
When the last frame's pose is composited back to the first frame's viewpoint,
a visible seam appears in the reconstructed mesh.
Fix: after all poses are estimated in _estimate_poses(), add a loop closure step:
compute ICP between the last frame and frame 0 to obtain the residual
transformation. Distribute the residual error linearly across all intermediate
poses (slerp for rotation, lerp for translation). Use Open3D PoseGraph and
global_optimization if available; fall back to linear interpolation otherwise.
File: src/kinect_forge/reconstruct.py
ID: KF-005
Sequential RGBD odometry accumulates drift over a full 360 scan.
When the last frame's pose is composited back to the first frame's viewpoint,
a visible seam appears in the reconstructed mesh.
Fix: after all poses are estimated in _estimate_poses(), add a loop closure step:
compute ICP between the last frame and frame 0 to obtain the residual
transformation. Distribute the residual error linearly across all intermediate
poses (slerp for rotation, lerp for translation). Use Open3D PoseGraph and
global_optimization if available; fall back to linear interpolation otherwise.
File: src/kinect_forge/reconstruct.py