Rig2world transform noisy?
ArmandB opened this issue · 0 comments
I saw #98 and did some testing for myself. tl;dr it says that SensorTicks are much more stable and synchronized than HostTicks.
Does this mean that the Rig2World transforms are inconsistent/incorrect b/c they are based on HostTicks (SoC Ticks), which from what I understand is the timestamp when the image reached the SoC (subject to variable latency) not the time the image was taken?
I went and verified that the SensorTicks for each frame are much more stable and synchronized than the HostTicks. SensorTicks are ~10ns different (when they don't match up exactly) while HostTicks hardly ever match up and can be 1ms+ different.
The rigToWorld transform is based on user's location at some absolute timestamp:
auto timestamp = PerceptionTimestampHelper::FromSystemRelativeTargetTime(HundredsOfNanoseconds(checkAndConvertUnsigned(m_prevTimestamp)));
auto location = m_locator.TryLocateAtTimestamp(timestamp, m_worldCoordSystem);
When the raw data is collected, each sensor also has a slightly different rig2world matrix transform I assume to account for the headset's calculated difference in position between the two timestamps.
This could be why a paper Inside-Out Instrument Tracking for Surgical Navigation in Augmented Reality (https://arbook.icg.tugraz.at/schmalstieg/Schmalstieg_402.pdf) has mentioned that: "While the HoloLens 2 does expose sensor coordinates and mapping functions [65], from which intrinsic and extrinsic camera matrices could be obtained, we found these parameters to be too inaccurate"