HKUST-Aerial-Robotics / A-LOAM

Advanced implementation of LOAM
Other
2.05k stars 789 forks source link

Unstable Of Distortion In LaserOdometry #18

Open johnsongash opened 4 years ago

johnsongash commented 4 years ago

Thanks for the nice code from your guys, after studying the detail of it there is one question here.

In LaserOdometry since Kitti provide undistortion pointcloud, distortion is turn off in the code. But for our own data(VLP16), turning on distortion to true makes the result much poor, the path oscillate and sometimes diverge, we have notice that TransformToEnd shoud turn on too... Pictures of turning on distortion(Upper) and turning off(Lower) for same data are shown below, any advice here?

2019-10-15 20-32-45 的螢幕擷圖

2019-10-15 20-36-00 的螢幕擷圖

nikwitting commented 4 years ago

I just want to confirm that I experience the same problem with the gates_oscillating_motion.bag dataset with distortion=1 and TransformToEnd activated. Did you find a solution? distortion

johnsongash commented 4 years ago

@nikwitting yes the problem still exists, not finding solution yet. @shaozu hope the author help us out.

ZhenminHuang commented 4 years ago

@johnsongash @nikwitting Not sure if it's too late to make this comment. I also met the same problem. I tried replace the loss function HuberLoss(0.1) to CauchyLoss(0.05) and that killed down the oscillation by considerable amount (although not completely). Perhaps you can try other combinations of loss functions and coefficients?

This is the path if HuberLoss(0.1) was used. 2020-01-06 16-04-02屏幕截图

This is the path if CauchyLoss(0.05) was used. 2020-01-06 15-59-40屏幕截图

Hope I help.

manymuch commented 3 years ago

I encountered the same problem as mentioned by @johnsongash @nikwitting, and @ZhenminHuang 's solution does mitigate the oscillating problem but still can not fully solved the issue. Another walk-around is by commenting out L28 and L29 and of course in L80 and L81. I guess there might be some problem with interpolation of quaternion using ceres auto differentiation. Note that the author might have noticed similar issue, and leave L26, which is a approximation of quaternion slerp when rotation is small enough, which is, quite a common assumption for wheeled vehicles.

bryantaoli commented 1 year ago

I had the same problem. I think it is because the assumption of uniform velocity is not valid, leading to the failure of deskew. I solved this problem by taking the distorted value and using the result after the first scan2scan to deskew.