Re: KITTI 00 sequence & rtabmap.

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