jeskesen / i2c_imu

ROS node for communicating with several models of commercially available IMUs over I2C in linux.
GNU General Public License v3.0
52 stars 44 forks source link

Why there is a linear_acceleration in X direction for not moving imu 9250? #15

Open Desoky01 opened 4 years ago

Desoky01 commented 4 years ago

I am using mpu9250 by the package /jeskesen/i2c_imu and the launch file is:


<?xml version="1.0"?>
<launch>
    <node pkg="tf" type="static_transform_publisher" name="imu_to_base" 
    args="0 0 0 0 0 0 base_link imu_link 50" /> 
<!--
    <node name="i2c_imu_node" pkg="i2c_imu" type="i2c_imu_node" ns="imu" output="screen">
        <param name="imu_frame" value="imu_link" />
    -->
    <node name="i2c_imu_node" pkg="i2c_imu" type="i2c_imu_node"  output="screen">
        <param name="imu_frame" value="imu_link" />

    <param name="i2c_bus" value="1" />

    <param name="i2c_slave_address" value="104" />
    <!--imu_type:
        0 = Auto discover
        1 = Null (used when data is provided from a remote IMU
        2 = InvenSense MPU-9150
        3 = STM L3GD20H + LSM303D
        4 = STM L3GD20 + LSM303DLHC
        5 = STM LSM9DS0
        6 = STM LSM9DS1
        7 = InvenSense MPU-9250
        8 = STM L3GD20H + LSM303DLHC
        9 = Bosch BMX055
        10 = Bosch BNX055
    -->
    <param name="imu_type" value="7" />

    <!--fusion_type:
        0 = RTFUSION_TYPE_NULL: just a dummy to keep things happy if not needed
        1 = RTFUSION_TYPE_KALMANSTATE4: kalman state is the quaternion pose
        2 = RTFUSION_TYPE_RTQF: RT quaternion fusion
    -->
    <param name="fusion_type" value="2" />

    <!-- mpu9250/gyro_accel_sample_rate: 5 - 1000 Hz --> 
    <param name="mpu9250/gyro_accel_sample_rate" value="80" />

    <!-- mpu9250/compass_sample_rate: 1 - 100 Hz -->
    <param name="mpu9250/compass_sample_rate" value="40" /> 

    <!-- mpu9250/gyro_low_pass_filter:
        0x11 - 8800Hz, 0.64mS delay
        0x10 - 3600Hz, 0.11mS delay
        0x00 - 250Hz, 0.97mS delay
        0x01 - 184Hz, 2.9mS delay
        0x02 - 92Hz, 3.9mS delay
        0x03 - 41Hz, 5.9mS delay
        0x04 - 20Hz, 9.9mS delay
            0x05 - 10Hz, 17.85mS delay
            0x06 - 5Hz, 33.48mS delay
        -->
        <param name="mpu9250/gyro_low_pass_filter" value="3" />

        <!-- mpu9250/accel_low_pass_filter:
            0x00 - 460Hz, 1.94mS delay
            0x01 - 184Hz, 5.80mS delay
            0x02 - 92Hz, 7.80mS delay
            0x03 - 41Hz, 11.80mS delay
            0x04 - 20Hz, 19.80mS delay
            0x05 - 10Hz, 35.70mS delay
            0x06 - 5Hz, 66.96mS delay
        -->
        <param name="mpu9250/accel_low_pass_filter" value="3" />

        <!-- mpu9250/gyro_full_scale_range:
            0 +/- 250 degress per second
            8 +/- 500 degress per second
            16 +/- 1000 degress per second
            24 +/- 2000 degress per second
        -->
        <param name="mpu9250/gyro_full_scale_range" value="16" />

        <!-- mpu9250/accel_full_scale_range:
            0 +/- 2g
            8 +/- 4g
            16 +/- 8g
            24 +/- 16g
        -->
        <param name="mpu9250/accel_full_scale_range" value="16" />
    </node>
</launch>

the imu doesn't move, but the output is:

---
header: 
  seq: 2685
  stamp: 
    secs: 1598377876
    nsecs: 786975020
  frame_id: "imu_link"
orientation: 
  x: 0.0196061972529
  y: -0.100331619382
  z: 0.19570158422
  w: 0.975320518017
orientation_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
angular_velocity: 
  x: -0.000253986567259
  y: -0.000782979652286
  z: 0.000762287527323
angular_velocity_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
linear_acceleration: 
  x: 1.93930334473
  y: 0.0191536132812
  z: 9.28710823975
linear_acceleration_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
---

Why there is a linear_acceleration in X direction x=1.9 ?

adityasivaraj commented 2 years ago

Hi @Desoky01 did you find out why this happens? I am getting a value of 3 in x-direction when it is stationary. I am assuming it is a bias and covariance is supposed solve it, but the calibration doesn't seem to calculate covariance.