next up previous
Next: Visual Effects to Increase Up: Prior Work Previous: Prior Work

Addressing Latency at a System Level

In the past, distributed VR applications have used two complementary techniques to address problems of latency: dead reckoning and decoupling.

Dead reckoning addresses late arrival of motion information. By using derivatives of earlier motion or derivative information provided by an object itself, the dead reckoning system calculates the position of an object locally, without needing to wait for the arrival of the actual information  [5]. This can clearly introduce errors when the dead reckoning system uses a derivative whose own derivative is non-zero (such as the derivatives of objects under user control).

More advanced dead reckoning systems use a Kalman filter  [1] to attempt to predict where an object will be in the future. This technique also introduces errors, especially when the model of the object's motion used by the Kalman filter is a poor one.

Decoupling in VR systems is the process of making the system multi-threaded, with certain threads assigned to tasks most in need of low latency  [7]. Typically, these threads are Unix processes provided with dedicated hardware resources to guarantee a minimum level of performance. Non-critical tasks are serviced as resources become available. This approach can guarantee, for example, that a new frame will be generated to track user head motion, but the contents of the environment (for example, balls moving under a kinematics simulation) may be changed at a slower rate. This technique can result in jerky or unpredictable motion by the objects in the scene, making it harder for the user to comprehend what is happening.

Loring Holden
Tue Dec 17 17:11:50 EST 1996