Closed narutojxl closed 3 years ago
Q1: should be n, I have fixed this issue, but not tested...
Q2: In our design, the deskewed points are only used in lidar mapping, and not fed to the odometry.
Q3: setting b_distortion=true may not get good results .... so we set b_distortion=false. May two reasons make the results worse: 1. since the timestamp is given to each point according to its relative horizontal angle to the starting angle, this assumption may be not always correct; 2. the undistortMeasurements()
may exist some bugs that we haven't figured out ...
Q4: you cannot comment this line. When NUM_OF_LASER=1
, this line can give a valid pointer to sublidar[1]
. This can prevent the segmentation fault of line 216.
Hi doctro jiao, @gogojjh Thanks for your detailed and kind reply, my problems are solved, thanks again!
Hi doctor jiao @gogojjh, Thanks for your excellent work and sharing to the community ! I download the smaller bag
RHD
to test.Q1: When we undistort points, is it a typo
pose_undist[IDX_REF]
, it seems thatpose_undist[n]
? In config yaml file, IDX_REF default value is 0. So the pose_undist[0] is laser0 from k frame to k+1 frame delta transform, pose_undist[1] is the laser1 sensor. https://github.com/gogojjh/M-LOAM/blob/2276310f985705a0ee07274068ece3ade798f806/estimator/src/estimator/estimator.cpp#L403-L405Q2: When we assign
cur_feature_
to theprev_feature_
, wherecur_feature_
is the raw current feature points, not be deskewed. I found in theEstimator::undistortMeasurements()
function, we evently convert current feature points intocurrent end
instant according to the estimated relative transform from k to k+1 frame. If we after this moment assigncur_feature_
to theprev_feature_
, theprev_feature_
is current feature points incurrent end instant
. Then for next frame loop, we convert current feature points intocurrent start instant
using the linearly and slerp interpolation of last estimated delta transform, accordint to every point's time ratio,it seems make sense as
prev_feature
kd-tree points and thecur_feature_
points in the same frame. I'm not sure i correctly understand code totally. https://github.com/gogojjh/M-LOAM/blob/2276310f985705a0ee07274068ece3ade798f806/estimator/src/estimator/estimator.cpp#L532-L543 https://github.com/gogojjh/M-LOAM/blob/2276310f985705a0ee07274068ece3ade798f806/estimator/src/lidarTracker/lidar_tracker.cpp#L58-L59Q3: In the above,
TransformToStart(cloud_data.points[i], point_sel, pose_local, false, SCAN_PERIOD);
feature_extract.hpp#L292, why we callTransformToStart()
withb_distortion = false
. According to my understanding, i think we should call withb_distortion = true
, because current feature points is raw points, not be deskewed. I don't understand this code.BTW: should we comment this line? https://github.com/gogojjh/M-LOAM/blob/2276310f985705a0ee07274068ece3ade798f806/estimator/src/rosNodeRHD.cpp#L213
If i don't describle my problem clearly, please tell me, i will add more info. Look forward to discuss with you, thanks for your help and time in advance!
Best regards jxl