Issue with the data rate of sensor fusion module of the MetaMotion R and the pymetawear on centOS

currently i am working with MetaMotion R specially with the sensor fusion module but i have an issue with the data rate i receive on my linux

i am using MetaWear R with the pymetawear Pyhton wrapper over the C++ library 

my case is that i need to get the sensor fusion of ACC, GYRO, Quanterion each at frequency higher that 50 Hz for example 100 Hz each but the problem is even when using the example module with the pymetawear python wrapper for sensor fusion which is adjusted by default to 50 Hz each i get data rating of 33 Hz for ACC, Gyro and Quanterion each
Even when i try getting fusion for only ACC and Gyro both can reach 50 Hz maximum even if i set the data rate to 100 each

i tried changing the the connection parameters to 7.5 but it didn't solve the problem i also tried changing the mode of the sensor fusion but the problem still happens 

any help will be apprenticed i need to get get the the fusion of 4 sensors at least at 50 HZ and when i check with ACC, Gyro, Quanterion and Euler also the data rate received is 25 Hz

Comments

  • edited April 2017
    Again, you cannot stream that much data through the btle connection.  You are limited to a 100Hz transmission frequency which is completely used by 1 sensor fusion output in NDOF mode.  When you increase the number of sensors you stream from, you must lower the data rate for each one.
  • edited April 2017
    Ok that is not clear for me because i have tested with the CPRO and the MetaMotion R i can get data rate up to 300 Hz for example i can get the data of ACC, Gyro and Mag each at 100 Hz simultaneously "not sensor fusion but getting each sensor separately" leading to a data rate of total 300 Hz also for the CPRO i can reach 200 Hz easily by having the ACC and Gyro separately simultaneously each at 100 Hz
    i can reach this in both CPRO and MetaMotion R by enabling the high frequency stream and at the same time also setting the connection parameter to 3.75 for a single board.

    another thing i tested sensor fusion with only 1 sensor enabled the "ACC" and set the data rate for 100 Hz and the receiveddata rate was 50 Hz and that was strange because i only enabled the setting and call back for ACC in sensor fusion with data rate of 100 Hz

    also the default of the sensor fusion module in the pymetawear python wrapper is set to stream ACC, GYRO and QUAT with 50 Hz for each channel and the real rate i get is 33 Hz but this question regards the pymetawear so i should ask on the community of the pymetawear.

    only with sensor fusion i can't find a command to set high frequency stream which i think there is no such command for sensor fusion and when i change the connection parameter it makes the data rate received not stable.

    but seems that only the sensor fusion module have this problem and its data rate is limited by 100 Hz so i was asking if i am missing something or if there is a solution.

    however thanks for your reply, for your help and any help with this regard will be appreciated.
  • Sensor odr is not the same as ble communication frequency.  You can sample data at whatever frequency you want provided the actual frequency of communication over the ble link does not exceed 100Hz.  Raw acc/gyro/mag data are only 6 bytes so you can pack 3 of them into one 20 byte ble packet.  Sensor fusion data occupies 12 or 16 bytes so you can't use the same trick to reduce the transmission frequency.

    When using the time processor with sensor fusion output, you should set the delay to be a bit lower than your actual value.  In this case, try using 15ms instead of 20ms for a 50Hz odr.

    3.75ms is not a valid connection interval.  See:
  • Now its clear for me thanks very much for your time and help
This discussion has been closed.