koide3 / hdl_localization

Real-time 3D localization using a (velodyne) 3D LIDAR
BSD 2-Clause "Simplified" License
775 stars 309 forks source link

More details about IMU #35

Open ricber opened 4 years ago

ricber commented 4 years ago

Hi, could you please explain how you built the IMU data? Did you use the Velodyne embedded sensor or an external one? How did you calculate the orientation? Did you use the common filters from ROS imu_tools or something else? What about the covariance matrices?

Thank you for the help :)

koide3 commented 4 years ago

Hi @ricber , I used the IMU embedded in velodyne HDL32e. I integrated IMU and LIDAR data using my own UKF, so I didn't use the ROS common filters. I assumed a constant observation noise covariance for updating UKF. See the following code which performs the IMU LIDAR integration and the paper for details:

https://github.com/koide3/hdl_localization/blob/master/include/hdl_localization/pose_estimator.hpp https://journals.sagepub.com/doi/full/10.1177/1729881419841532

ricber commented 4 years ago

Thank you for your answer and congrats for the paper because it's very well-written :) Btw, I've seen the constant observation noise covariance numbers that you put in the code. How did you come up with them? Are they just common practice black magic numbers, or did you implemented some fine-tuning method?

koide3 commented 4 years ago

I've tried to calculate these values from the IMU's spec sheet, but they didn't work well. Then, I put the magic numbers which work better. If you need some theoretical ways to calculate the covariance, the following papers would be help.

https://arxiv.org/pdf/1708.03852.pdf https://github.com/ethz-asl/ethzasl_msf/raw/master/2013_IROS_lynen_modular_sensor_fusion.pdf

ricber commented 4 years ago

So, basically you get rid of the covariance values from the imu_data msgs, right? I have your same setting: a Velodyne HDL 32E and IMU msgs from the Velodyne embedded sensor. However, if I run hdl_localization without IMU prediction all is working fine. When I add the IMU prediction the localization fails from the beginning. The only difference is that my covariances values of the imu_data msgs are all set to 0. Instead, I see a -1 in the first position of the orientation_covariance vector of your hdl_400.bag file. Is that -1 important? Moreover, have you done some calibration to the IMU? In case, could you explain how you did it?

Nova555 commented 3 years ago

Hi, I the same problem as you. DId you solve it?

ricber commented 3 years ago

No, sorry. If I remember correctly in the end I've just chose for the localization without IMU.

ricber commented 3 years ago

Hi @Nova555 , do you have the "-1" in the first position of the orientation_covariance vector of your IMU message?