Closed rlabs-oss closed 2 years ago
Why do I see here the angular_velocity
section? If acceleration is integrated by time, there is no need to adjust any bias, just select a proper measurement. Otherwise, it seems that your LIDAR accelerometer does not multiply the gravity axis by 0.1 but initially subtracts $9.81 m/s^2$ from Z axis measurement. Try to remove the gravity compensation setting from the LIDAR's IMU. In the worst case, the ROS driver itself does not provide the possibility to incorporate bias, so you need to use the controller application provided with the underlying library to adjust the hardware-dependent bias. It can be done using the key --set-acceleration-bias X:Y:Z
where X, Y and Z are biases per axis represented as signed rationals.
However, I cannot recommend adjusting the hardware bias unless you are totally sure that your LIDAR accelerometer does not subtract gravity acceleration. Instead of this, it seemed quite better to write the simplest Python node script republishing IMU messages with proper adjustment, and include it in your launchfile.
angular_velocity was posted by mistake, I meant to compare the acceleration - from the data below /livox/imu gravity is being subtracted?
After attempting IMU to Lidar calibration (after subtracting gravity from linear_acceleration Z) [Refinement] Online Refinement 100% [||||||||||||||||||||||||||||||]
[Final Result] Rotation LiDAR to IMU = 179.269126 -69.520855 164.556532 deg [Final Result] Translation LiDAR to IMU = -0.450945 0.258602 -0.187264 m [Final Result] Time Lag IMU to LiDAR = 1661874299.99544144 s ???? [Final Result] Bias of Gyroscope = 1.378125 -0.612872 -1.593472 rad/s [Final Result] Bias of Accelerometer = 0.034958 -0.009180 -0.023757 m/s^2 [Final Result] Gravity in World Frame = -4.431547 -3.114117 -8.146427 m/s^2
ros::Time::now()
value copying the current system timestamp.Thus, I can recommend you at first to review thoroughly the value set for fusion and remove absolute Euler angles from it. Which utility do you use for measurement fusion?
Thank you for the analysis - it helps a lot. The package is: https://github.com/hku-mars/LiDAR_IMU_Init The Livox Avia is using the BMI055 - if the Avia frames are sent to FASTER_LIO the package works as expected. Since the Livox implementation seems to be Livox specific I'm attempting to adapt the WitMotion IMU frames to match in order to use FASTER_LIO with the Mid40 Lidar which does not have an internal IMU.
Is there any configuration parameter available to scale the IMU z linear_acceleration?
Lidar IMU: angular_velocity: x: 0.7692424058914185 y: -0.06967184692621231 z: -0.1747824251651764
Wit_Motion IMU: linear_acceleration: x: -0.8622070550918579 y: 0.2490820288658142 z: 9.920170783996582
In the example above it should match the Lidar, and thus multiplied by 0.1x