Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Questions and clarifications #24

Open
dumblob opened this issue Nov 13, 2019 · 2 comments
Open

Questions and clarifications #24

dumblob opened this issue Nov 13, 2019 · 2 comments

Comments

@dumblob
Copy link

dumblob commented Nov 13, 2019

a) When and how will be haptics supported in SDKs?

b) How are quaternions in Kai computed? What are they useful for? Is it just combination of the 3 sensors (accelerometer, magnetometer, gyroscope)? Is it somehow smoothed (e.g. by floating average filter)?

c) How are PYR data computed? Is it just combination of the 3 sensors (accelerometer, magnetometer, gyroscope)? Is it somehow smoothed (e.g. by floating average filter)?

d) How can one calibrate sensors (especially accelerometer, magnetometer, gyroscope)? There seems to be no direct access, but because of their drift, calibration will be necessary (see Inertial Navigation Systems for issues - especially the Zero Velocity Update trick).

e) Can Kai provide proportional information about fingers? From FingerPositionalData it seems it can, but without knowing how this data is acquired, there is no way to find out whether this data is linear, what is the proper range, how to calibrate the data, etc.

f) What is the maximum frequency with which Kai can send accelerometer, magnetometer, and gyroscope data?

g) What is the latency to read out accelerometer, magnetometer, and gyroscope data? How to decrease the latency (it feels currently somewhat delayed)?

@rakshith-ravi
Copy link
Contributor

Hello @dumblob. Thank you for reaching out to us. To answer your questions:

a) When and how will be haptics supported in SDKs?
The haptics control will be enabled in the next update. We will release an ETA soon. The haptics API will allow you to set the duration for the vibration upto a hardware controlled maximum. This limitation is in place as the haptic motor has a significant effect on battery life if not properly managed.

b) How are quaternions in Kai computed? What are they useful for? Is it just combination of the 3 sensors (accelerometer, magnetometer, gyroscope)? Is it somehow smoothed (e.g. by floating average filter)?
The quaternions are computed directly from the Accelerometer and Gyroscope raw data. The magnetometer is not used for the time being due to high susceptibility to EMI. The quaternions are not not filtered.

c) How are PYR data computed? Is it just combination of the 3 sensors (accelerometer, magnetometer, gyroscope)? Is it somehow smoothed (e.g. by floating average filter)?
The PYR is calculated by applying a transform to the quaternions data. The PYR data is not filtered either.

d) How can one calibrate sensors (especially accelerometer, magnetometer, gyroscope)? There seems to be no direct access, but because of their drift, calibration will be necessary (see Inertial Navigation Systems for issues - especially the Zero Velocity Update trick).
There is an IMU calibration function provided that adjusts for the bias/offset that causes this drift. It averages 10 seconds of data to execute this. Additionally, the zero velocity update is not required as the Kai does not keep track of absolute spatial position. It uses relative motion and absolute orientation to execute its gesture recognition.

e) Can Kai provide proportional information about fingers? From FingerPositionalData it seems it can, but without knowing how this data is acquired, there is no way to find out whether this data is linear, what is the proper range, how to calibrate the data, etc.
This version of the Kai will not be able to provide finger positional data. The function that you’re seeing is experimental and is currently quite buggy. If there is any progress on this front, we will inform you.

f) What is the maximum frequency with which Kai can send accelerometer, magnetometer, and gyroscope data?
The Kai internally samples the sensors at 1KHz. The data is sent over Bluetooth every 9ms. The minimum for the BLE protocol is 7.5ms but it is currently set to 9ms for better battery life.

g) What is the latency to read out accelerometer, magnetometer, and gyroscope data? How to decrease the latency (it feels currently somewhat delayed)?
Measurements that we’ve done maintain a consistent latency of <10ms total. Our next firmware update will further decrease this by around 1ms.

@dumblob
Copy link
Author

dumblob commented Nov 18, 2019

Thanks for the very informative answer. Those are good news. Therefore one more question if you don't mind:

h) Does your mouse emulation (i.e. mouse cursor movement as used for playing FPS games) do anything to compensate the (mathematically speaking) derivative function characteristics of the sensor data? The sensor data deliver acceleration instead of velocity, but to move the cursor naturally, our brains expect the cursor to move according to velocity, not acceleration (this is also the reason why all such devices have the worst possible reputation for cursor movement). Do you perform any integration or similar compensation of the sensor data?

Of course, plain integration wouldn't probably suffice due to noisy data and thus unacceptable delay when integrating, but this could be compensated by many means (from basic ones like Kalman filter estimation through fuzzy logic filtering up to neural networks filtering).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants