V1.3 - New detection method: Detect Separation
Double Hip Tracker V1.3 introduces a new method to detect loss of tracking, and I'd like to explain it because it may have consequences in the tracking quality.
In short
A new option called Detect Separation (default ON), measures the distance that separates the two trackers. If that distance changes too much, one of the trackers probably flew off. We will now try to detect that, in addition to the usual method.
For more details, read below.
The previous method: Tracker hardware status reports
Up to V1.2, Double Hip Tracker was only using status reports from the tracker hardware and drivers to figure out if that tracker had lost tracking.
Hardware trackers normally broadcast the status Running_OK
when they are tracking normally,
otherwise they either return the status Calibrating_OutOfRange
when they are out of vision from a lighthouse,
or in some worst cases, the tracker just disappears from the list of tracked devices if there's radio interference or some other catastrophic
loss of communication.
Whenever trackers are broadcasting the Calibrating_OutOfRange
status, they usually enter a degraded mode, where the position and rotation of the tracker is
either a result of estimations from the IMU, or past data. This degraded mode works fairly well for micro-occlusions lasting a few milliseconds.
This doesn't work so well for durable occlusions, causing the trackers to fly off.
In many cases, this method works great. In fact, shortly after the release of Double Hip Tracker, VRChat itself started to adopt that technique to reject trackers. VRChat would now freeze trackers as soon as they're lost instead of letting it fly off.
The new method: Detect Separation between trackers
The previous method has three issues:
- There can be a very short delay between the tracker starting to fly off and the tracker hardware reporting itself as lost, so the tracker will fly anyway.
- When the tracker is no longer lost, it will fly back in from the wrong position to the correct one.
- There are cases where the tracker will fly off without ever being detected as lost. This happens most when the tracker is only barely visible by one lighthouse, which will have limited information to resolve how far the tracker is from that lighthouse.
Since we have double trackers, I am introducing a new method to detect loss of tracking in V1.3.
When the Detect Separation option is enabled, the following will happen:
- The previous method remains active no matter what, it is just being supplemented by the new method.
- As long as one tracker is lost, we will use information from when both trackers were healthy to position our virtual tracker.
- If one of the tracker hardware reports itself as lost (= previous method), none of the statements below will apply.
- Whenever the double trackers become separated by a distance larger than 1 meter (3.28 feet), we will consider one of the trackers to be lost.
- There is no time limit. The trackers must come back within 1 meter of each other.
- Whenever the double trackers separate above or below 2.5cm (1 inch) of the average distance that separates them, we will consider one of the trackers to be lost.
- There is a time limit: If this situation stays like that for more than 2 seconds, we will calculate a new average distance.
- We will choose which of the two trackers is considered lost based on various factors, including whether the tracker hardware has recently reported it as lost, an excessive distance between the tracker and the HMD, or the velocity of the tracker.
This method is ON by default, but you can toggle it individually on each double tracker.
When to turn this off?
This method is optional, and in rare cases there might be a reason to turn it off:
- You may need to turn it off if you are wearing two trackers that strongly move independently of each other.
- If the distance between your two trackers is very small.
- If you are doing physical movements that would cause a strong variation in the distance between your trackers.
There may be options to tweak this even further in future versions, stay tuned, and ask on Discord.