Posted by
matlabbe on
URL: http://official-rtab-map-forum.206.s1.nabble.com/Improving-a-lidar-only-setup-tp11071p11086.html
Hi,
If you can share a rosbag of the raw lidar data + wheel odom + imu + tf and tf_static, that could be easier for me to recommend which parameters to tune in your case.
For your questions:
1. If it varies between localizations, maybe there are some errors in the map, so the robot localizes 10-15 cm the reality.
2. The localization should be independent of speed. Furthermore, I would assume as soon as the robot stops, if it based on speed, it will then know it is off by 10 cm and re-correct itself. If localization is still 10 cm off after stopping and the robot doesn't re-localize correctly, then it would be a map issue (independently of the speed). The speed would influence the deskewing, but as you verified that deskewing works as expected, that could be a map issue.
3. You can assembled only for mapping, only for localization, or both. The only thing is that with assembling the point cloud would be denser, then would influence the parameter "Icp/CorrespondenceRatio", which would need to be set smaller. Using assembled clouds could also give different normals in the point clouds than without assembling, so if Icp/PointToPlane is used, it could affect ICP registration.
4. You should be able to localize in any direction. One type of proximity detection can be affected by RGBD/ProximityAngle parameter, for which you can set to 180 to accept in opposite direction. If the robot is coming back in opposite direction more than 1 meter away, parameter RGBD/ProximityPathFilteringRadius can also be increased.
5. This is mostly relevant for mapping phase. If odometry is not reliable or drifts fast, a large variance should be set, in the other case it is better to keep it as low as possible. The reason is that odometry is used to determinate if a loop closure is good or not. Setting to low while in reality the odometry drifts more could make RTAB-Map rejecting good loop closures. Setting too high while in reality the odometry drift is low could make RTAB-Map accepting bad loop closures. If you do a loop of 100 meters with the robot ending exactly at the same location it started and the drift is 1 meter, then you have a 1% odometry drift. If the robot is moving 50 cm per sec, a variance of 0.05*0.05 could be used. If you use ICP odometry, a covariance will be computed for you based on matching results.
6. Same answer than 3.
7. As a rule of thumb, you can set Icp/MaxCorrespondenceDistance as 10 times the voxel size. That is what I do in my
examples. Setting it larger can help to detect loop closures / localize where the robot thinks it is more farther/closer from the reality. In most cases, the ICP results will be pretty much the same.
cheers,
Mathieu