Welcome, Guest Login

Support

Receiving Raw IMU Data From Piksi Multi

Piksi® Multi includes a Bosch BMI160 IMU and a Bosch BMM150 Magnetometer on the OEM module.  As of firmware release v1.0.11, it is possible to stream raw IMU values from the BMI160.  It is very important to note that this IMU data is raw, unfiltered, and unaligned IMU information directly from the MEMS IMU chip.  This feature is NOT a blended GNSS/INS position or attitude solution.  

In order to enable the IMU data, it is necessary to configure the following firmware settings.  

 
Settings Group Setting Name Description Notes
imu imu_raw_output Enable/Disable raw imu output  
imu imu_rate The rate of IMU raw measurements A max of 25 Hz is recommended for UART communication at 115200 bps.  Use only USB or Ethernet interfaces for higher data rates. 200Hz is not recommended.
imu gyro_range gyroscope scaling  
imu acc_range accelerometer scaling  


Consult the firmware settings document for more information and the IMU datasheet for more information.
When the "imu_raw_output" setting is set to True, Swift Binary Protocol (SBP) messages with the IMU information are sent from the device through any interface configured to transmit these messages.  The messages that are sent include MSG_IMU_RAW (sbp message type 0x0900 hex or 2304 decimal) and MSG_IMU_AUX (sbp message type 0x0901 hex or 2305 decimal).  

The raw imu data is communicated directly as tics from the BOSCH sensor and the units depends on the configuration of the underlying sensor. As such, it is necessary to know how the IMU range is configured in order to determine how to map the raw values to more familiar units.  The Bosch sensor configuration is a direct reflection of the register interface in the Bosch device and it is communicated by Piksi Mulit and/or Duro periodically in MSG_IMU_AUX. With both the MSG_IMU_AUX message and the MSG_IMU_RAW in our SBP protocol, it is sufficient to understand everything about the raw_imu data stream and how to convert it into familiar units.

As an example of how to convert the raw tics from the MSG_IMU_RAW into more familiar units, let us take the accelerometer raw values.  The maximum range of a signed 16 bit integer will correspond to the configured maximum range. For instance, if the accelerometer range is configured as +/- 8 g's, it means that 2^15 (32768) tics are equivalent to 8g's. Thus in software a user should take the raw value, multiply by the configured maximum range in g's (or m/s^2 or ft/s^2 as required), and divide by the number of "tics" of resolution the sensor has (32768) to convert into g's. The user can determine the configured range through the fields of MSG_IMU_AUX.  Consult the sbp message protocol documentation for more information.  

To output IMU messages from the UART0 port a default enabled_sbp_messages settings needs to be changed as shown below:


Viewing IMU Data In The Console:

The Swift Console reads IMU messages and displays on a line chart.  Navigate to the advanced >> IMU tab of the console to see the data as shown below.

IMU Orientation:

Consult the axis illustration on the top of Piksi Multi board for a hands on depiction of the IMU orientation with respect to the board.  For Duro, consult the Duro documentation.
Last Updated: Mar 21, 2019 01:36PM PDT
fca1b46c3a1b1cf102986602d2d2d39a@swiftnav.desk-mail.com
https://cdn.desk.com/
false
desk
Loading
seconds ago
a minute ago
minutes ago
an hour ago
hours ago
a day ago
days ago
about
false
Invalid characters found
/customer/en/portal/articles/autocomplete