Antilatency Tracking Alignment Library

Antilatency Tracking Alignment Library

用于组合两个一起使用的跟踪系统的数据的库。例如,在具有自己的跟踪系统的虚拟现实头盔上使用Alt跟踪器时。

库功能

此库计算有关跟踪器的相对旋转、坐标系的相对旋转以及跟踪数据之间的延迟的信息。

跟踪对比

当使用具有自己跟踪系统的AR/VR耳机Antilatency时,我们可以比较这两个系统的跟踪数据来指定Placement,确定正确的插值时间(因为耳机使用自己的timewarp值),进行某些诊断等。通常,跟踪器:
要确定时间延迟,只需知道跟踪器转弯处的数据即可。因此,库会忽略跟踪器偏移信息。跟踪对比基于以下等式:a(t) = rotationBSpace * b(t) * rotationARelativeToB 在t的每一刻 t

ITrackingAlignment

ITrackingAlignment优化器用于对比Antilatency跟踪系统和第三方系统的数据。要创建优化器的实例,设置initialARelativeToBPlacement的一部分)参数和initialTimeBAheadOfA(跟踪数据之间延迟的估计值)参数。其中AAltB是第三方跟踪器。State(状态)结构是优化器的状态,其存储有关Alt相对于第三方跟踪器的旋转、第三方世界坐标系的相对旋转以及跟踪数据之间的时间延迟的数据。更新这些字段时,使用Alt旋转数据(无外推)、第三方跟踪器旋转数据(按原样)和当前时间(从特定参考点设置,例如从程序启动时设置)。所有旋转都表示为四元数。

State

struct State {
Math.floatQ rotationARelativeToB;
Math.floatQ rotationBSpace;
float timeBAheadOfA;
}
优化器在State下记录跟踪对比的结果。
如果第三方跟踪器数据的到达时间早于Alt,则State.timeBAheadOfA的值为正值,否则为负值。

使用示例

C#语言代码:
using Antilatency.TrackingAlignment;

ILibrary alignmentLibrary = Antilatency.TrackingAlignment.Library.load();
ITrackingAlignment trackingAlignment = alignmentLibrary.createTrackingAlignment(
    initialARelativeToB,
    initialTimeBAheadOfA
);

...
while (...) {
    State state = trackingAlignment.update(
        alt.state.pose.rotation,
        rotationB,
        currentTime
    );

    < use state somehow >
    ...
}