Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BNO055 Outputting Bad Linear Accel Data

    BNO055 Outputting Bad Linear Accel Data

    Hi I am currently trying to use the Bno055 sensor in a project where I need to find velocity relatively accurately for 30 seconds.
    I attempted to use the BNO055 in NDOF mode to get linear acceleration straight from the register this data however sees large amounts of drift due to inaccurate linear Accel readings.
    I checked the calibration status and all sensors and the system are reading 3.
    Is there any pointers someone may have on what I may be doing wrong.
    I am using the breakout made by adafruit for a school project and would appreciate any feedback greatly.
    5 REPLIES 5

    Occasional Contributor

    Hi Sir:

       Could you tell us more information, like your sceneraio and raw data, actual speed, etc? What operating mode did you choose?

       As far as I know, someone achieved your idea by linear acceleration of BNO055.

      Thank you for choosing BNO055 and look forward to your feedback.

    I used the sensor in NDOF mode.

    I followed the full calibration steps and ensured both the system, accelerometer, gyroscope and magnetometer were continually reading 3. Then I began sampling by moving the encoder wheel along the table. The IMU is placed directly at the center of rotation of the wheel, where x is pointing toward the table, z is toward my body and y is pointing  to the direction of motion. video

    • ax, ay, az: are being ready from the linear accel register
    • wx,wy,wz: are the angular velocity measurements
    • roll, pitch and yaw are the euler outputs
    • delta x: is my encoder current distance in millimeters
    • micro seconds: is the time stamp in microseconds



    I then use these sample measurements and attempt to integrate them in matlab only using the linear acceleration data. I create a vector for the linear acceleration and integrate my time steps (sampling every 10 ms) assuming starting at rest which I did. The resulting velocity vector is then converted to a speed  because i just need the magnitude for my project. The resulting graph can be seen below having a steady drift in the speed. I determined from help of collegues and other online forums that this is due to poor linear acceleration measurements, perhaps an offset. I was told by some people on other forums that the BNO055 would not work for this application, because of acceleration inaccuracy.


    I wanted to go straight to the source to see if you may have any recommendations because like I said I only need roughly 30 seconds of good data before I can reset my integration. Thus getting rid of any accumulating error.

    Some other details is the device for the project is handheld and must remain so. We have a budget under 500 dollars so i am trying to keep sensor cost under 100. I am using an arduino uno because in the final design we are trying to use a nano (if need be we can switch to a better board).

    If you may have a better sensor recommendation I am open to that as well.

    If there is any more detail you may need feel free to ask.

    Sample Data: (attached the one in the graph is LMD1)

    Occasional Contributor

    Hi Sir:

    On the chart red line means the actual speed, and blue line mean the calculated speed by linear accel accumulating?

    Maybe the linear accle data have a few drift, but it is not so big as your chart showed.

    Could you keep the sensor horizental to move your wheel? Under this condition, we can calculate the moving speed by accumulating linear accel data or the raw accel data with reducing offset. And these data should sum up to zero or close to approach zero.

    Could you try these kind of accel data or linear accel data to calculate speed or offer them to us?

    I also recommand you to try other modes to lool into the results.

    Thank you.





    I will give this a shot and get back to you