-
Notifications
You must be signed in to change notification settings - Fork 5
Description
During development of live feedback software we stumbled over an odd behaviour when streaming live analog data from Noraxon Ultium EMG/IMU sensors via QTM over RTClientSDK.Net. We first observed these as spikes in the analog data but then later understood that channels get mixed up for some frames. A small test program based on RTClientSDK.NET code was developed to isolate and redproduce the issue (attached).
NoraxonLiveDataTestProgram.zip
Our Environment
- QTM 2020.3 Build 6020
- MyoResearch MR3.3 16.68 (same issue with an older version)
- Two Windows 10 computers connected via Ethernet (one running QTM, the other the test program)
- Latest RTClientSDK.NET (Jan 18 2021) (same issue with an older version)
- One EMG/IMU sensor setup with EMG data and Accelerometer data setup in QTM/MyoResearch, sending live data out on 5 Channels: The EMG channel, Ax, Ay, Az and Sync. QTM runs at 100 Hz
- No EMG electrodes connected (same issue when electrodes are connected)
- Built as .NET Core 3.1 Console Application with VS 2019
In order for the test program to highlight the issue clearly the sensor must lie still on the table (the issue itself is not related to this though).
Test Program (Program.cs)
The test program is requesting QTM to stream analog data for all frames. It stores the channel names in a List object. The program assumes, that the channel layout does not change. If data comes in, it will compare the last sample of the last frame with the first sample of the new frame. If in one of the channels a difference of more than 0.5 is observed then the two conflicting samples will be printed out.
Expectations
Since we do not move the EMG/IMU sensor there shouldn't be a large change in values. The program should run without finding anything suspicious.
Result
For some frames (after some seconds) the test program is printing out information like this:
** Large change detected! **
== Last Packet Last Sample ==
L_EMG_AntebrachDors: 0,011719108
Ax: 0,039063696
Ay: 1,0010072
Az: 0
Sync: 0
== This Packet First Sample ==
L_EMG_AntebrachDors: 0
Ax: 0,013672293
Ay: 0,042970065
Az: 1,0068667
Sync: 0
** Does it look like some channels are mixed up? **
From visual inspection one can see that that channel data got mixed up (or the channel layout unexpectedly changed): EMG data now is on Ax, Ax on Ay, Ay on Az. Actually this latest frame is already again in the expected channel order: Az measuring earths gravity.
Other Important Observations
- This behaviour could not be reproduced when streaming the data from a recording - it seems to be a problem only when streaming live data.
- Inside of QTM the data does not seem to be mixed up.
- We are not totally sure if the issue is related to the IMU data or if it is also present when only streaming EMG data.
I hope the issue is documented in a clear, is reproducible and can be fixed. In case you require more information please let me know.
Best wishes from Karlsruhe!