Posted by
matlabbe on
URL: http://official-rtab-map-forum.206.s1.nabble.com/KITTI-00-sequence-rtabmap-tp7625p7674.html
Hi Anthony,
Do you want to compare trajectory created with the rosbag against the ground truth of the odometry (files not rosbag) leaderboard? For the ground truth, the number of poses shold be exactly the same than the trajectory size. I would also doubt that the poses from the rosbag would be exactly the ground truth poses at exact timestamp. For benchmarking with the kitti's groundtruth, use the folder of files, not the rosbag. Well, you would lose IMU data when not using the rosbag.
You may check if someone has integrated the ground truth in the rosbag. Without the ground truth, you could
compare with the GPS at least for qualitative results.
For the
bash file, it is using the rtabmap-kitti_dataset tool, here is the description and an example at the bottom (note the Rtabmap/CreateIntermediateNodes that is required to get the same number of poses than the images in the kitti folders, and thus the same number of poses than the ground truth):
$ rtabmap-kitti_dataset
Usage:
rtabmap-kitti_dataset [options] path
path Folder of the sequence (e.g., "~/KITTI/dataset/sequences/07")
containing least calib.txt, times.txt, image_0 and image_1 folders.
Optional image_2, image_3 and velodyne folders.
--output Output directory. By default, results are saved in "path".
--output_name Output database name (default "rtabmap").
--gt "path" Ground truth path (e.g., ~/KITTI/devkit/cpp/data/odometry/poses/07.txt)
--quiet Don't show log messages and iteration updates.
--color Use color images for stereo (image_2 and image_3 folders).
--height Add car's height to camera local transform (1.67m).
--disp Generate full disparity.
--exposure_comp Do exposure compensation between left and right images.
--scan Include velodyne scan in node's data (use --scan_only to ignore image data).
--scan_step # Scan downsample step (default=1).
--scan_voxel #.# Scan voxel size (default 0.5 m).
--scan_k Scan normal K (default 0).
--scan_radius Scan normal radius (default 0).
RTAB-Map options:
--help Show usage.
--version Show version of rtabmap and its dependencies.
--params Show all parameters with their default value and description.
If a database path is set as last argument, the parameters in the
database will be shown in INI format.
--"parameter name" "value" Overwrite a specific RTAB-Map's parameter :
--SURF/HessianThreshold 150
For parameters in table format, add ',' between values :
--Kp/RoiRatios 0,0,0.1,0
Logger options:
--nolog Disable logger
--logconsole Set logger console type
--logfile "path" Set logger file type
--logfilea "path" Set logger file type with appending mode if the file already exists
--udebug Set logger level to debug
--uinfo Set logger level to info
--uwarn Set logger level to warn
--uerror Set logger level to error
--logtime "bool" Print time when logging
--logwhere "bool" Print where when logging
--logthread "bool" Print thread id when logging
Example:
$ rtabmap-kitti_dataset \
--Rtabmap/PublishRAMUsage true\
--Rtabmap/DetectionRate 2\
--Rtabmap/CreateIntermediateNodes true\
--RGBD/LinearUpdate 0\
--GFTT/QualityLevel 0.01\
--GFTT/MinDistance 7\
--OdomF2M/MaxSize 3000\
--Mem/STMSize 30\
--Kp/MaxFeatures 750\
--Vis/MaxFeatures 1500\
--gt "~/KITTI/devkit/cpp/data/odometry/poses/07.txt"\
~/KITTI/dataset/sequences/07
For the graph rotating with imu, do you use Optimizer/Strategy=2 (GTSAM)? and which rtabmap version are you using? as I added some new constraints to gtsam
recently to avoid this kind of rotation. I'll download the rosbag to see if I have the same rotation.
EDIT: I tested the bag, the orientation is coming from the IMU's initial yaw:
[ WARN] (2021-03-16 19:09:13.297) Odometry.cpp:307::process() Updated initial pose from xyz=0.000000,0.000000,0.000000 rpy=0.000000,-0.000000,0.000000 to xyz=0.000000,0.000000,0.000000 rpy=0.022268,0.011411,-0.551108 with IMU orientation
cheers,
Mathieu