True Haptics™ Vibrations - Under The Hood
The DK motion system is capable of producing tactile vibrations up to 85 Hz for DK2 and up to 94 Hz for DK2+/DK6. Currently, these limits are from the ClearPath motor capabilities. To put this in perspective, the tactile transducers in the market today, on average, are capable of 80 Hz, and some can output up to 200 Hz.
The tactile vibration processing occurs in the controller which utilizes a highly deterministic embedded-system, which has the following components:
1) 1 GHz ARM chip running Texas Instruments Real-Time OS (TI-RTOS)
This is where the high-resolution tactile vibrations are generated in real-time, using motion physics and math. These vibrations are expressed as 10 kHz velocity-waveforms, which are transferred to the microcontrollers through shared-memory.
Since Sigma develops both the embedded-system and the software, we are able to implement algorithms in either the PC-side or the embedded-side, whichever is the most optimal.
2) Two microcontrollers, each running at 200 MHz
These are ultra low-latency microcontrollers, capable of digital output changes every 5 nanoseconds. One of them is responsible for outputting the 10 kHz velocity-waveforms (generated from #1 above) to each motor. At 10 kHz, this means a new velocity is generated every 0.1 ms (1 Ă· 10,000 Hz).
Let's look at a 90 Hz tactile vibration and how this relates to the 10 kHz velocity-waveforms.
- Period of full-waveform: 1 Ă· 90 Hz = 11.11 ms
- Period of half-waveform: 11.11 ms Ă· 2 = 5.556 ms
Since the velocity is updated every 0.1 ms, each half-waveform period must be in multiples of 0.1 ms.
- Generated period of half-waveform: 5.5 ms (5.556 ms rounded down)
- Generated period of full-waveform: 2 x 5.5 ms = 11.0 ms
- Generated frequency: 1 Ă· 11.0 ms = 90.909 Hz
- Generated frequency error: 90.909 Hz – 90.0 Hz = 0.909 Hz
Even with a 10 kHz sampling rate, there is still a small error. We could easily increase the sampling rate (i.e. 20 kHz) to reduce the error. However, our research suggests that our bodies are not able to feel difference between 90.909 Hz and 90 Hz.
Now, let's look at each tactile motion-layer and how it works under the hood.
Currently, the DK motion system has two tactile motion layers (more to come in the near future).
1) Vibrations
These are high frequency vibrations in the vehicle's pitch, roll & heave data. The vibrations are analyzed in the PC-side software which calculates the frequencies and amplitudes of the vibrations. The calculated data are streamed from the PC-side software to the controller, with a data-transfer latency of less than 1 ms (Ethernet latency). In the controller, the road-vibration data is converted to high-resolution 10 kHz velocity-waveforms, where the waveforms are quadratic curves for smoother and more natural vibrations.
2) Engine Vibrations
The engine speed is streamed from the PC-side software to the controller. Using an algorithm based on real-world engine vibration analysis, the engine speed is converted to two distinct frequencies that's related to the engine speed. These are called orders of vibrations. The outputs of the algorithm are also 10 kHz velocity-waveforms for each motor.
For more details on road vibrations and engine vibrations, please read Motion Layers Defined.