Ladies and Gentlemen,
I am designing the hardware for a system, which stabilizes a boat on the sea, to avoid the hot coffe to spill from the cup.
As a sensor, I'm considering to use an IMU from Bosch Sensortec. The choice is surprising rich, at the moment I'm considering BHA260AB as a first try.
I started to read the datasheet, the flyer and whatever is given by manufacturer. Unfortunately, some things are confusing, and I'm getting a bit frustrated.
It is written in the datasheet: " Integrated BSX sensor fusion software for reliable 3D orientation, activity recognition, and more " (page 2)
It sounds super, but does it mean, that we don't need to develop our own combining filter algorithms, some Kalman filtering and so on?
Can we read out the already combined and stabilized position and movement data through the host interface?
Also on page 2 there are another sentence: " It can boot from a wide variety of hosts, ranging from a small Cortex-M0™ MCU up to multicore application processors. "
And, as I read the datasheet towards, it is written, that during this boot process, a firmware must be downloaded to the sensor, either from the host processor or from an external flash memory.
Than, my question is: isn't there a built-in firmware in the sensor's processor? Doesn't it work as a standalone sensor? What is the "pre-installed integrated sensor fusion and other sensor processing software "? (BHA260 flyer, 1st page) What SW is preloaded into the on-chip ROM? I suppose 144kByte is too much for just a downloader ...
In case this sensor requires our own firmware to function, I'm still opened for another device as well. This sensor is important, but only a part in a more complex system, therefore I don't want to spend months to learn it. My idea is: drop in a sensor, and the FW developer colleague can read it through I2C or SPI, and done. Is it possible or am I too idealistic?
Thank You in advance for any further information.
You could refer the following introduction of BSX fusion algorithm. You could read BSX output via host interface.
"Bosch Sensortec’s sensor fusion software BSX is a complete 9-axis fusion solution which combines the measurements from 3-axis gyroscope, 3-axis geomagnetic sensor and a 3-axis accelerometer to provide a robust absolute orientation vector. The sensor fusion software BSX provides orientation information in form of quaternion or Euler angles.
The algorithm fuses the sensor raw data from 3-axis accelerometer, 3-axis geomagnetic sensor and 3-axis gyroscope in an intelligent way to improve each sensor’s output. This includes algorithms for offset calibration of each sensor, monitoring of the calibration status and Kalman filter fusion to provide distortion-free and refined orientation vectors. Since Bosch Sensortec 9-axis fusion software is developed together with the sensor hardware, optimized performance in terms of dynamics and immunity to distortion effects is achieved."
Firmware that contained BSX fusion algorithm and sensor processor(like step counter, activity recognition, etc.) must be downloaded to sensor via host interface if you boot sensor by host boot mode.
Thank You for the quick response. Am I correct, we need to download the BSX_Lite firmware, compile it for the ARC EM4 cpu (OK, it is written, that GCC supports it, we just have never tried) and then the binary must be downloaded by the host processor into the RAM of BHA260AB. The built-in ROM in this case is nothing else as a bootloader.
Did I understand it correctly? (sorry I'm just a HW guy, not a FW prof.)
Is it possible to stay clear of this complication? I mean: the whole unit is just turned on, and the sensor gives the measured angles and position, already processed and filtered, through the I2C host interface. Without downloading any FW, it already resides in the sensor's ROM. Alternatively, can You please recommend a 6 axis IMU sensor with integrated signal processing which works this fool-proof way ? We don't use geomagnetic sensor, isn't it a problem? There's no need for any extra, like step counter or gesture recognition or so.
The firmware has been compiled, ou do not need to compile it separately. You can see on GitHub that it is in the form of header files. You only need to load the host into the sensor through the I2C interface through the example code.
If you don't want to load firmware through host, you can refer data sheet and use standalone boot mode. BHI260AB can be configured to boot autonomously from an external flash device. You only need to read algorithm output from BHI260AB.