Bosch Sensortec Community

    Showing results for 
    Search instead for 
    Did you mean: 

    BNO055 Direction of Movement

    BNO055 Direction of Movement


    Hi all,


    Is there a possibility to measure the direction of movement in sensor-body-coordinates with the BNO055?

    Generally, the approach would be to integrate linear acceleration over time to obtain the velocity in each axis and keep track of velocity to obtain a vector of the actual movement of the sensor. However, in the datasheet of the BNO055 sensor it says integrating lineare acceleration is not a good idea:

    Note: The linear acceleration signal typically cannot be integrated to recover velocity, or
    double-integrated to recover position. The error typically becomes larger than the signal within
    less than 1 second if other sensor sources are not used to compensate this integration error.

    Is it possible to perform such a task with the BNO055? The value of the velocities is not important only the direction of movement.


    Thanks for your help.

    5 REPLIES 5

    Community Moderator
    Community Moderator

    What is the exactly result you want about the Direction of Movement. 

    Only the direction itself or the distance of the movement. 

    If only the direction,  then using orientation data is already enough.

    If you are care about the moving distance,  then you need to consider to use BNO output (compensated accel and gyro data) with third party algorithm.  Directly use linear acceleration is not a good idea which already explain in datasheet and you copied here.  

    The goal is to know in which direction the sensor is moving.

    Imagine the followoing scenario: the sensor performs a 1 dimensional movement along the x-axis. Then, the accelerometer indicates positive acceleration in x direction in the beginning. While moving with constant velocity, the acceleormeter shows no acceleration at all. When the the sensor is deaccelerating it shows a negative acceleration on the x axis (in the oposite direction of the actual movement).
    Our goal is to get a vector pointing always in x-direction during the whole movement (in this example). This information is needed to activate further sensors that are pointing in the respective direction. Is this task possible ?

    Can you elaborate on how to use only the orientation data to perform this task, please?


    Community Moderator
    Community Moderator


    Thanks for your inquiry.

    It is true that integrating BNO055 linear acceleration outputs to obtain the velocity vector is not a good idea. This is because any noise of the linear acceleration outputs will quickly accumulate to large velocity vector errors.

    BNO055 is capable of providing absolute orientation with respect to fixed local coordinates. This means that you always know where your device is pointing statically and dynamically. If you add one more 3-axis accelerometer such as BMA253 in your device, then you can enable BMA253 built-in high-pass filter to get real-time acceleration data that has removed gravity vector. By analyzing the BMA253 data after high-pass filter you should be able to determine which direction on your device body coordinates your device is moving.


    Community Moderator
    Community Moderator

    If you only care about the motion direction,  you can take linear accel then accumulate with time to get velocity value. 

    Then positive velocity means move towards posivite direction of one axis and negative velocity means move towards negative direction of one axis.